// // main.cpp // spoj2 // // Created by Piotrek on 23.09.2015. // Copyright 2015 Piotrek. All rights reserved. // #include <iostream> #include <math.h> using namespace std; long long pow10(short int i){ switch(i){ case 0: return 1; break; case 1: return 10; break; case 2: return 100; break; case 3: return 1000; break; case 4: return 10000; break; case 5: return 100000; break; case 6: return 1000000; break; case 7: return 10000000; break; case 8: return 100000000; break; case 9: return 1000000000; break; case 10: return 10000000000; break; case 11: return 100000000000; break; case 12: return 1000000000000; break; case 13: return 10000000000000; break; case 14: return 100000000000000; break; case 15: return 1000000000000000; break; case 16: return 10000000000000000; break; case 17: return 100000000000000000; break; case 18: return 1000000000000000000; break; default: return 1; } } int main() { ios_base::sync_with_stdio(0); unsigned long long k, a, b, s, i=1, j=0; short l=0, licz; cin >> k >> a >> b; while (a<=b) { if(a%k==0){ s=0; while (a/i>0) { i*=10; l++; } for (licz=l-1; licz>=0; licz--) { s+=pow((a/pow10(licz))%10, 2); } if(s*k==a) { //cout << a << endl; j++; } a++; } else a++; } cout << j; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | // // main.cpp // spoj2 // // Created by Piotrek on 23.09.2015. // Copyright 2015 Piotrek. All rights reserved. // #include <iostream> #include <math.h> using namespace std; long long pow10(short int i){ switch(i){ case 0: return 1; break; case 1: return 10; break; case 2: return 100; break; case 3: return 1000; break; case 4: return 10000; break; case 5: return 100000; break; case 6: return 1000000; break; case 7: return 10000000; break; case 8: return 100000000; break; case 9: return 1000000000; break; case 10: return 10000000000; break; case 11: return 100000000000; break; case 12: return 1000000000000; break; case 13: return 10000000000000; break; case 14: return 100000000000000; break; case 15: return 1000000000000000; break; case 16: return 10000000000000000; break; case 17: return 100000000000000000; break; case 18: return 1000000000000000000; break; default: return 1; } } int main() { ios_base::sync_with_stdio(0); unsigned long long k, a, b, s, i=1, j=0; short l=0, licz; cin >> k >> a >> b; while (a<=b) { if(a%k==0){ s=0; while (a/i>0) { i*=10; l++; } for (licz=l-1; licz>=0; licz--) { s+=pow((a/pow10(licz))%10, 2); } if(s*k==a) { //cout << a << endl; j++; } a++; } else a++; } cout << j; return 0; } |