project-euler/a206.cpp

33 lines
1.1 KiB
C++
Raw Normal View History

#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;
}