#include <cstdio>
unsigned long long min(unsigned long long a, unsigned long long b) {return a<=b?a:b;}
int main() {
unsigned long long k, a, b;
scanf("%llu %llu %llu", &k, &a, &b);
a += (k - a%k) % k;
//printf("a: %llu\n", a);
unsigned long long max_n = 9;
for (int i = 1; i <= 18; i++) {
if (k < max_n / (81 * i)) {
break;
}
max_n = (max_n + 1) * 10 - 1;
}
//printf("max_n: %llu\n", max_n);
b = min(b, max_n);
//printf("b: %llu\n", b);
long long result = 0;
for (unsigned long long i = a; i <= b; i+=k) {
int sum_digits_sq = 0;
unsigned long long j = i;
while (j > 0) {
sum_digits_sq += (j%10) * (j%10);
j /= 10;
}
if (i == k*sum_digits_sq) {
//printf("%llu\n", i);
result++;
}
}
printf("%llu\n", result);
}
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 | #include <cstdio> unsigned long long min(unsigned long long a, unsigned long long b) {return a<=b?a:b;} int main() { unsigned long long k, a, b; scanf("%llu %llu %llu", &k, &a, &b); a += (k - a%k) % k; //printf("a: %llu\n", a); unsigned long long max_n = 9; for (int i = 1; i <= 18; i++) { if (k < max_n / (81 * i)) { break; } max_n = (max_n + 1) * 10 - 1; } //printf("max_n: %llu\n", max_n); b = min(b, max_n); //printf("b: %llu\n", b); long long result = 0; for (unsigned long long i = a; i <= b; i+=k) { int sum_digits_sq = 0; unsigned long long j = i; while (j > 0) { sum_digits_sq += (j%10) * (j%10); j /= 10; } if (i == k*sum_digits_sq) { //printf("%llu\n", i); result++; } } printf("%llu\n", result); } |
English