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