#include <iostream> #include <cinttypes> #define DEBUG(x) std::cerr << #x " ---> " << (x) << "; "; #define DEBUGLN(x) DEBUG(x) std::cerr << std::endl; int sumOfSquaresOfDigits(int64_t num) { int64_t retval = 0; int64_t rem = 0; while (num > 0) { rem = num % 10; retval += rem * rem; num = num / 10; } return int(retval); } int main() { std::cout.sync_with_stdio(false); int64_t k, a, b; int retval = 0; std::cin >> k >> a >> b; DEBUG(k); DEBUG(a); DEBUGLN(b); int64_t minBound = (a + k - 1) / k * k; int64_t maxBound = std::min(b, k * 18 * 9 * 9); for (int64_t i = minBound; i <= maxBound; i += k) { if (k * sumOfSquaresOfDigits(i) == i) { DEBUG(i); ++retval; } } std::cout << retval; }
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 | #include <iostream> #include <cinttypes> #define DEBUG(x) std::cerr << #x " ---> " << (x) << "; "; #define DEBUGLN(x) DEBUG(x) std::cerr << std::endl; int sumOfSquaresOfDigits(int64_t num) { int64_t retval = 0; int64_t rem = 0; while (num > 0) { rem = num % 10; retval += rem * rem; num = num / 10; } return int(retval); } int main() { std::cout.sync_with_stdio(false); int64_t k, a, b; int retval = 0; std::cin >> k >> a >> b; DEBUG(k); DEBUG(a); DEBUGLN(b); int64_t minBound = (a + k - 1) / k * k; int64_t maxBound = std::min(b, k * 18 * 9 * 9); for (int64_t i = minBound; i <= maxBound; i += k) { if (k * sumOfSquaresOfDigits(i) == i) { DEBUG(i); ++retval; } } std::cout << retval; } |