#include <iostream> #include <math.h> using namespace std; long long int k; long long int f(long long int n) { long long int m,suma; suma=0; for(;n!=0;) { m=n%10; suma+=m*m; n=(n-n%10)/10; } return suma; } long long int zakres(long long int m) { //cout<<k*m*81<<endl; return k*m*81; } int main() { long long int a,b,r; int licznik=0; long long int licznik_potegi; r=0; cin>>k; cin>>a; cin>>b; if(a<k) a=k; else { licznik=a/k+1; a=licznik*k; } if(a<=10) licznik_potegi=1; else licznik_potegi=log10(a)+1; //cout<<licznik_potegi<<endl; //cout<<a<<endl; for(long long int i=a;i<=b;i=i+k) { if(i==k*f(i)) { r++; } if(i>pow(10,licznik_potegi)) { if(i>zakres(licznik_potegi)) break; else licznik_potegi++; } } cout<<r; 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 | #include <iostream> #include <math.h> using namespace std; long long int k; long long int f(long long int n) { long long int m,suma; suma=0; for(;n!=0;) { m=n%10; suma+=m*m; n=(n-n%10)/10; } return suma; } long long int zakres(long long int m) { //cout<<k*m*81<<endl; return k*m*81; } int main() { long long int a,b,r; int licznik=0; long long int licznik_potegi; r=0; cin>>k; cin>>a; cin>>b; if(a<k) a=k; else { licznik=a/k+1; a=licznik*k; } if(a<=10) licznik_potegi=1; else licznik_potegi=log10(a)+1; //cout<<licznik_potegi<<endl; //cout<<a<<endl; for(long long int i=a;i<=b;i=i+k) { if(i==k*f(i)) { r++; } if(i>pow(10,licznik_potegi)) { if(i>zakres(licznik_potegi)) break; else licznik_potegi++; } } cout<<r; return 0; } |