#include <iostream> #include <cmath> #include <chrono> using namespace std; int isSquare(int x) { int square = sqrt(x); if (x == square * square) return square; return 0; } int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int main() { int n; cin >> n; auto start = chrono::steady_clock::now(); auto n2 = n * n; int wynik = 0; for (int a = 1; a < n; a++) { auto a2 = a * a; for (int b = a; b < n; b++) { auto b2 = b * b; if (a2 + b2 >= n2) break; for (int h = 1; h < n; h++) { auto p = a2 + b2 + h * h; if (p > n2) break; int diag = isSquare(p); if (diag > 0) { wynik++; //cout << wynik << ". (" << a << "," << b << ") " << h << " - " << diag << endl; } } } } cout << wynik << endl; //auto end = chrono::steady_clock::now(); //chrono::duration<double> elapsed_seconds = end - start; //cout << "Czas: " << elapsed_seconds.count() << " sekund" << endl; }
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 | #include <iostream> #include <cmath> #include <chrono> using namespace std; int isSquare(int x) { int square = sqrt(x); if (x == square * square) return square; return 0; } int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int main() { int n; cin >> n; auto start = chrono::steady_clock::now(); auto n2 = n * n; int wynik = 0; for (int a = 1; a < n; a++) { auto a2 = a * a; for (int b = a; b < n; b++) { auto b2 = b * b; if (a2 + b2 >= n2) break; for (int h = 1; h < n; h++) { auto p = a2 + b2 + h * h; if (p > n2) break; int diag = isSquare(p); if (diag > 0) { wynik++; //cout << wynik << ". (" << a << "," << b << ") " << h << " - " << diag << endl; } } } } cout << wynik << endl; //auto end = chrono::steady_clock::now(); //chrono::duration<double> elapsed_seconds = end - start; //cout << "Czas: " << elapsed_seconds.count() << " sekund" << endl; } |