#include<iostream> #include<cstdlib> #include<cmath> //#include<cstdio> using namespace std; unsigned long long int mins[18] = {1, 1, 5, 31, 247, 2058, 17637, 154321, 1371743, 12345680, 112233446, 1028806585, 9496676164, 88183421517, 823045267490, 7716049382717, 72621641249093, 685871056241427}; unsigned long long int maxs[18]; // = [pow(10,1), int main(){ for (int i = 0;i < 18; i++) maxs[i] = pow(10, i); unsigned long long int k, a, b, n = 0; cin >> k; cin >>a; cin >> b; for (int i =0 ; i < 18; i++) { if (k < mins[i]) b = min(b, (unsigned long long int) pow(10, i+1)); //if (k > max[i]) a = max(a, pow(10, i)); } int r = a % k; if (r) a += (k-r); //cout << k << " " << a << " " << b << endl; while (a <= b) { unsigned long long int i = a, s= 0; while (i) { s += pow((i%10), 2); i /= 10; } //cout << a << " " << s << " " << s*k << endl; if (s * k == a) n++; a += k; } cout << n << endl; }
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 | #include<iostream> #include<cstdlib> #include<cmath> //#include<cstdio> using namespace std; unsigned long long int mins[18] = {1, 1, 5, 31, 247, 2058, 17637, 154321, 1371743, 12345680, 112233446, 1028806585, 9496676164, 88183421517, 823045267490, 7716049382717, 72621641249093, 685871056241427}; unsigned long long int maxs[18]; // = [pow(10,1), int main(){ for (int i = 0;i < 18; i++) maxs[i] = pow(10, i); unsigned long long int k, a, b, n = 0; cin >> k; cin >>a; cin >> b; for (int i =0 ; i < 18; i++) { if (k < mins[i]) b = min(b, (unsigned long long int) pow(10, i+1)); //if (k > max[i]) a = max(a, pow(10, i)); } int r = a % k; if (r) a += (k-r); //cout << k << " " << a << " " << b << endl; while (a <= b) { unsigned long long int i = a, s= 0; while (i) { s += pow((i%10), 2); i /= 10; } //cout << a << " " << s << " " << s*k << endl; if (s * k == a) n++; a += k; } cout << n << endl; } |