#include <iostream> using namespace std; bool isRight(unsigned long long a, unsigned long long k); int main() { ios_base::sync_with_stdio(0); unsigned long long k; unsigned long long a; unsigned long long b; int n = 0; cin >> k; cin >> a; cin >> b; unsigned long long minnumb = (a / k); if (a % k != 0) { minnumb++; } if (minnumb > 1458) { minnumb = 1458; } unsigned long long maxnumb = (b / k); if (maxnumb > 1458) { maxnumb = 1458; } for (unsigned long long i = minnumb; i <= maxnumb; i++) { if (isRight(i, k)) { n++; } } cout << n; return 0; } bool isRight(unsigned long long a, unsigned long long k) { unsigned long long b = a * k; while (b != 0) { int c = b % 10; a -= c * c; b /= 10; } if (a == 0) { return true; } else { return false; } }
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 | #include <iostream> using namespace std; bool isRight(unsigned long long a, unsigned long long k); int main() { ios_base::sync_with_stdio(0); unsigned long long k; unsigned long long a; unsigned long long b; int n = 0; cin >> k; cin >> a; cin >> b; unsigned long long minnumb = (a / k); if (a % k != 0) { minnumb++; } if (minnumb > 1458) { minnumb = 1458; } unsigned long long maxnumb = (b / k); if (maxnumb > 1458) { maxnumb = 1458; } for (unsigned long long i = minnumb; i <= maxnumb; i++) { if (isRight(i, k)) { n++; } } cout << n; return 0; } bool isRight(unsigned long long a, unsigned long long k) { unsigned long long b = a * k; while (b != 0) { int c = b % 10; a -= c * c; b /= 10; } if (a == 0) { return true; } else { return false; } } |