#include #include #include #include #include using namespace std; template class IDiv { public: IDiv(unsigned long i){v = i;} int operator()(){int r = v%D;v/=D;return r;} private: unsigned long v; }; class KomatiCalc { public: KomatiCalc(){i = s = t = 0;} int operator()(int,int k){++i; if (k) s+=t,t=k<2?-i:i; else t = t*10+(t<0?-i:i); return s+t;} private: int i,s,t; }; class KomatiOut { public: KomatiOut(){i = 0;} void operator()(int j) {char* s[] = {"","-","+"};cout << s[j] << ++i;} private: int i; }; int main() { vector v(9); int i,nmax = 13122; // = 3^8 * 2 for (i=0;i(i)); if (accumulate(v.begin(),v.end(),0,KomatiCalc()) == 100) { for_each(v.begin(),v.end(),KomatiOut()); cout << endl; } } cout <<"Press any key"; char c; cin.get(c); return 0; } //---------------------------------------------------------------------------