#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
typedef unsigned long long ull;
ull f(ull n){
ull result = 0;
while(n > 0){
result += (n%10)*(n%10);
n /= 10;
}
return result;
}
ull max(ull a, ull b){
if(a > b){
return a;
}
return b;
}
ull min(ull a, ull b){
if(a < b){
return a;
}
return b;
}
ull main2(ull k, ull a, ull b){
ull n = 0;
ull start = k*max(ceil(a/k), 1);
ull end = min(k*10000, k*floor(b/k));
for(ull i = start ; i <= end ; i+=k){
if(k*f(i) == i){
++n;
}
}
return n;
}
int main(){
ull a = 0, b = 0, k = 0, maxi = 0;
cin >> k >> a >> b;
cout << main2(k, a, b) << endl;
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 | #include <iostream> #include <cstdlib> #include <cmath> using namespace std; typedef unsigned long long ull; ull f(ull n){ ull result = 0; while(n > 0){ result += (n%10)*(n%10); n /= 10; } return result; } ull max(ull a, ull b){ if(a > b){ return a; } return b; } ull min(ull a, ull b){ if(a < b){ return a; } return b; } ull main2(ull k, ull a, ull b){ ull n = 0; ull start = k*max(ceil(a/k), 1); ull end = min(k*10000, k*floor(b/k)); for(ull i = start ; i <= end ; i+=k){ if(k*f(i) == i){ ++n; } } return n; } int main(){ ull a = 0, b = 0, k = 0, maxi = 0; cin >> k >> a >> b; cout << main2(k, a, b) << endl; return 0; } |
English