C/C++の宿題片付けます 156代目
■ このスレッドは過去ログ倉庫に格納されています
0083デフォルトの名無しさん
2012/02/07(火) 21:06:50.73[2] 問題文(含コード&リンク):
自然数は4個の整数の立方数で表すことができると予想されている。 例えば70=(-21)^3+20^3+11^3、72=4^3+2^3。
このことを1000までの整数に対して確かめるプログラムを作成せよ。
効率よく探索しないとプログラムが停止しないので注意せよ。
[3] 環境
[3.1] OS:Windows7
[3.2] gcc 4.5.3
[3.3] C
[4] 2月末まで
n = 1..1000
if (n is cubic) n = a^3; end;
else
_a=-n..n
_if(n-a^3 is cubic) n-a^3 = b^3; end;
_else
__b=-n..a
__if(n-a^3-b^3 is cubic) n-a^3-b^3 = c^3; end;
__else
__c=-n..b
___if(n-a^3-b^3-c^3 is cubic) n-a^3-b^3-c^3 = d^3; end;
のような感じにやってみたり総当たり戦くらししか思いつかないのですが
どちらもかなり時間が掛かってしまう上、n=31の場合など取りこぼしもしてしまいます
何か効率の良い方法はありませんでしょうか?長文で失礼致します
■ このスレッドは過去ログ倉庫に格納されています