#include <stdio.h> #include <assert.h> static int test(size_t n, size_t k) { size_t q = n, r, c = 0; while (q) { r = q % 10; q /= 10; c += r * r; } c *= k; return n == c; } int main(void) { size_t k, a, b, i, out = 0; assert(scanf("%zu %zu %zu", &k, &a, &b) == 3); assert(k && b >= a); if (a % k) { a /= k; a++; a *= k; } for (i = a; i <= b; i += k) out += test(i, k); printf("%zu\n", out); 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 | #include <stdio.h> #include <assert.h> static int test(size_t n, size_t k) { size_t q = n, r, c = 0; while (q) { r = q % 10; q /= 10; c += r * r; } c *= k; return n == c; } int main(void) { size_t k, a, b, i, out = 0; assert(scanf("%zu %zu %zu", &k, &a, &b) == 3); assert(k && b >= a); if (a % k) { a /= k; a++; a *= k; } for (i = a; i <= b; i += k) out += test(i, k); printf("%zu\n", out); return 0; } |