プログラムの実行結果は以下の通り。
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; }