Problem 9
A Pythagorean triplet is a set of three natural numbers,a < b < c, for which,
a2 + b2 =c2
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for whicha + b + c = 1000.
Find the product abc.
C++:
#include <iostream>
using namespace std;
int main()
{
int n, c;
// a + b + c = n
// a^2 + b^2 = c^2
// a < b < c
// a + b > c
// a < n / 3
// b <= (n - a) / 2
// c = n - a - b
while(cin >> n) {
for(int a=1, maxa=n/3; a<maxa; a++) {
for(int b=a+1, maxb=(n-a)/2; b<=maxb; b++) {
c = n - a - b;
if(a + b <= c)
continue;
if(a * a + b * b == c * c)
cout << a * b * c << endl;
}
}
}
return 0;
}
C++(Truth):
#include <iostream>
using namespace std;
int main()
{
int s, c;
while(cin >> s) {
for(int a=3, maxa=(s-3)/3; a<=maxa; a++) {
for(int b=a+1, maxb=(s-1-a)/2; b<=maxb; b++) {
c = s - a - b;
if(a + b <= c)
continue;
if(a * a + b * b == c * c)
cout << a * b * c << endl;
}
}
}
return 0;
}