a**3 + b**3 + c**3 + d**3 = 2005 を満たすa,b,c,dを求める。
飼っているリュウキンが本日急に危篤状態。危篤になるのはこれで3回目だ。
20**3 = 8000 > 2005 なので,a,b,c,dを20まで虱潰すプログラムを作成する。
for( int a=1; a< 20; a++) { for( int b=1; b< 20; b++) { for( int c=1; c< 20; c++) { for( int d=1; d< 20; d++) { int s = a*a*a + b*b*b + c*c*c + d*d*d; if( s == 2005) ps( "Find %d^3 + %d^3 + %d^3 + %d^3 = 2005\n", a, b, c, d); cnt++; } } } }
但しこれだと解が沢山出力されて見にくいので,以下のように重複除去の処理を入れる。
for( int a=1; a< 20; a++) { for( int b=a; b< 20; b++) { for( int c=b; c< 20; c++) { for( int d=c; d< 20; d++) { int s = a*a*a + b*b*b + c*c*c + d*d*d; if( s == 2005) ps( "Find %d^3 + %d^3 + %d^3 + %d^3 = 2005\n", a, b, c, d); cnt++; } } } }
この結果出力は一件になった。
解速度
即