プログラムの実行結果は以下の通り。
a:1600000, b:1200000, c:900000 a+b+c=3700000
プログラムのソースは以下の通り。
#include "puzutl.h"
#include <math.h>
int main( int argc, cstring argv[])
{
const int s370 = 3700000;
const int cmax = s370 / 3;
int64 ctmp, croot;
int a, b;
for( int c=1; c< cmax; c++) {
ctmp = (int64)4*s370*c - (int64)3*c*c;
croot = (int)sqrt((double)ctmp);
if( croot*croot == ctmp) {
b = (croot - c) / 2;
a = (int64)b*b/c;
if( a+b+c == s370) {
ps( "a:%d, b:%d, c:%d\n", (int)a, (int)b, (int)c);
ps( "a+b+c=%d\n", (int)(a+b+c));
}
}
}
return 0;
}