整数边长直角三角形
若三边长{a,b,c}均为整数的直角三角形周长为p,当p = 120时,恰好存在三个不同的解:
{20,48,52}, {24,45,51}, {30,40,50}
在所有的p ≤ 1000中,p取何值时有解的数目最多?
代码演示
#include <iostream>
using namespace std;
#define MAX_N 1000
int cnt[MAX_N + 5] = {0};
int gcd(int a, int b) {
return (b ? gcd(b, a % b) : a);
}
int main() {
for (int i = 1; i <= 32; i++) {
for (int j = i + 1; j <= 32; j++) {
if (gcd(i, j) - 1) continue;
int a = 2 * i * j;
int b = j * j - i * i;
int c = i * i + j * j;
for (int p = a + b + c; p <= MAX_N; p += (a + b + c)) {
cnt[p] += 1;
}
}
}
int ans = 0;
for (int i = 1; i <= MAX_N; i++) {
if (cnt[i] > cnt[ans]) ans = i;
}
cout << ans << endl;
return 0;
}