#include #include #include using namespace std; string add(string summand1, string summand2) { string sum; unsigned short p;//for holding single digit of summand1 unsigned short q;//for holding single digit of summand2 unsigned short r;//for holding result of p + q bool izero = false; bool carry = false;//if true, next digit will be increased by one unsigned long i;//variable iterating through digits of summand1, summand2 and sum unsigned long l = summand1.size(); unsigned long m = summand2.size(); char t; sum.clear(); if(l < m){ while(l < m){ summand1.insert(0,"0"); l = summand1.size(); } }else{ if(m < l){ while(m < l){ summand2.insert(0,"0"); m = summand2.size(); }}} for(i = (unsigned) summand1.size() - 1; izero == false; i--){ if(i == 0) izero = true; if(summand1[i] == '0') p = summand1[i] - 48; else p = summand1[i] - 48; if(summand2[i] == '0') q = summand2[i] - 48; else q = summand2[i] - 48; if(carry == false){ r = p + q; if(r > 9){ r = r - 10; carry = true; } } else {{ r = p + q + 1; carry = false; } if(r > 9){ r = r - 10; carry = true; } } if(r == 0) t = r + 48; else t = r + 48;//convert back to char string u; stringstream ss; ss << t; ss >> u; sum.insert(0,u); } if(((unsigned) summand1.size() == (unsigned) sum.size()) && (carry == true)) sum.insert(0,"1"); return (sum); } string reversedigits(string numbertoreverse) { string numreversed; long i = (unsigned) numbertoreverse.size() - 1; while(i >= 0){ string u; stringstream ss; ss << numbertoreverse[i]; ss >> u; numreversed.append(u); i--; } return (numreversed); } int main() { string seed = "196"; string reversed; unsigned int i = 1000; string seq = ""; while(i > 0){ seq += seed; seq += ", "; reversed = reversedigits(seed); seed = add(seed, reversed); i--; } cout << seq << endl; return 0; }