#include #include #include using namespace std; string add(string summand1, string summand2) { string sum; unsigned short p; unsigned short q; unsigned short r; bool izero = false; bool carry = false; unsigned long i; 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; 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); } bool greaterthan(string firstnumber, string secondnumber) { bool isgreater; bool cond = true; if((unsigned) firstnumber.size() > (unsigned) secondnumber.size()) isgreater = true; else{ if((unsigned) firstnumber.size() < (unsigned) secondnumber.size()) isgreater = false; else{ if((unsigned) firstnumber.size() == (unsigned) secondnumber.size()){ for(unsigned long i = 0; (i < (unsigned) firstnumber.size()) && (cond == true); i++){ unsigned short p = firstnumber[i] - 48; unsigned short q = secondnumber[i] - 48; if(p > q){ isgreater = true; cond = false; }else{ if(p < q){ isgreater = false; cond = false; }}}}}} return (isgreater); } 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); } bool digitoccurrencecheck(string digoccnum) { bool eachdigitatleastonce = false; string digits = "0123456789"; bool zero = false; bool one = false; bool two = false; bool three = false; bool four = false; bool five = false; bool six = false; bool seven = false; bool eight = false; bool nine = false; for(unsigned short i = 0; i < 11; i++){ unsigned long j = 0; while(j < digoccnum.size() - 1){ if(digoccnum[j] == digits[i]){ if(digits[i] == '0') zero = true; if(digits[i] == '1') one = true; if(digits[i] == '2') two = true; if(digits[i] == '3') three = true; if(digits[i] == '4') four = true; if(digits[i] == '5') five = true; if(digits[i] == '6') six = true; if(digits[i] == '7') seven = true; if(digits[i] == '8') eight = true; if(digits[i] == '9') nine = true; } j++; } } if(zero == true && one == true && two == true && three == true && four == true && five == true && six == true && seven == true && eight == true && nine == true) eachdigitatleastonce = true; return (eachdigitatleastonce); } int main() { string lowbound = "1"; string upbound = "100"; string reversed; string testcandidate; string counter = "0"; for(lowbound = lowbound; greaterthan(lowbound, upbound) == false; lowbound = add(lowbound, "1")){ testcandidate = lowbound; while(digitoccurrencecheck(testcandidate) == false){ testcandidate = add(testcandidate, reversedigits(testcandidate)); counter = add(counter, "1"); if(digitoccurrencecheck(testcandidate) == true) cout << counter << endl; } counter = "0"; } return 0; }