#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; } |
English