33 lines
1.1 KiB
C++
33 lines
1.1 KiB
C++
|
#include <iostream>
|
||
|
#include <cmath>
|
||
|
#include <chrono>
|
||
|
#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<double> elapsed_seconds = end-start;
|
||
|
cout << "iterating took: " << elapsed_seconds.count() << endl;
|
||
|
|
||
|
return 0;
|
||
|
}
|