#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector <long long int> wyniki;
long int fun(long long int x)
{
int tab[20], l = 0;
fill (tab, tab + 20, 0);
long int w = 0;
while(x != 0)
{
tab[l] = x % 10;
l++;
x = x / 10;
}
for (int i = 0; i < l; i++)
{
w += tab[i] * tab[i];
}
return w;
}
int main()
{
long long int k, a, b;
scanf ("%lld", &k);
scanf ("%lld", &a);
scanf ("%lld", &b);
long long int maks, h;
int pot = 1;
for (int i = 10; pot <= 18; i *= 10)
{
h = i / k;
//cout << h << " " << pot*82 << endl;
if (h < pot * 82)
pot++;
else
{
maks = h + 3;
break;
}
}
long long int c;
long long int d = b / k;
if (a % k == 0) c = a / k;
else c = a / k + 1;
if (d > maks) d = maks;
//cout << c << " " << d << endl;
while (c <= d)
{
if (fun(c * k) == c)
if(a <= k * c && b >= k * c)
wyniki.push_back(c * k);
c++;
}
//for (int i = 0; i < wyniki.size(); i++)
// cout << wyniki[i] << endl;
printf("%lld", wyniki.size());
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 | #include <iostream> #include <cstdio> #include <vector> using namespace std; vector <long long int> wyniki; long int fun(long long int x) { int tab[20], l = 0; fill (tab, tab + 20, 0); long int w = 0; while(x != 0) { tab[l] = x % 10; l++; x = x / 10; } for (int i = 0; i < l; i++) { w += tab[i] * tab[i]; } return w; } int main() { long long int k, a, b; scanf ("%lld", &k); scanf ("%lld", &a); scanf ("%lld", &b); long long int maks, h; int pot = 1; for (int i = 10; pot <= 18; i *= 10) { h = i / k; //cout << h << " " << pot*82 << endl; if (h < pot * 82) pot++; else { maks = h + 3; break; } } long long int c; long long int d = b / k; if (a % k == 0) c = a / k; else c = a / k + 1; if (d > maks) d = maks; //cout << c << " " << d << endl; while (c <= d) { if (fun(c * k) == c) if(a <= k * c && b >= k * c) wyniki.push_back(c * k); c++; } //for (int i = 0; i < wyniki.size(); i++) // cout << wyniki[i] << endl; printf("%lld", wyniki.size()); return 0; } |
English