#include #include #include #define lmax 1500000 using namespace std; typedef unsigned char byte; inline int isqrt(int n) { return (int)sqrt((float)n); } inline uint64_t isqrt(uint64_t n) { return (uint64_t)sqrt((double)n); } int main() { auto start = chrono::system_clock::now(); for (uint64_t i = isqrt(10203040506070809ull); i <= isqrt(19293949596979899ull); i++) { uint64_t square = i*i; if (square % 10ull == 9 && (square/100ull) % 10ull == 8 && (square/10000ull) % 10ull == 7 && (square/1000000ull) % 10ull == 6 && (square/100000000ull) % 10ull == 5 && (square/10000000000ull) % 10ull == 4 && (square/1000000000000ull) % 10ull == 3 && (square/100000000000000ull) % 10ull == 2 && (square/10000000000000000ull) == 1) cout << "found " << i << " ^2 = " << square << endl; } auto end = std::chrono::system_clock::now(); std::chrono::duration elapsed_seconds = end-start; cout << "iterating took: " << elapsed_seconds.count() << endl; return 0; }