カメヲラボ

主にプログラミングとお勉強全般について書いてます

Herd Sums(2)

一番良いアルゴリズム(上)

たとえば、あなたが足して100になる連続した数を探そうとしているとき、どうするだろうか。100..ok, 99+98...ダメだ, 98+97...ダメだ, 97+96...ダメだなぁなんてやってたら、アホだ。100の次に考えられるのは、●+■=100、つまり2数の和で100になるものがあるか探すわけだから、100の半分の50前後で考えるはずだ。


50+51=101...×, 50+49=99...×
ここで普通はやめる。52以上、48以下の数で2つ足しても、100から遠のくだけだからだ。では次はどうするか。


3つ連続する値の場合は、100の3分の1すなわち33あたりの数字で探せばよいのだ。
33+34+35=102...×, 32+33+34=99...×


以下同様に、4つの連続する値は、100÷4=25周辺で調べる。
23+24+25+26=98...×, 24+25+26+27=102...×
なかなか見つからない(T-T)


5つの場合、100÷5=20周辺
18+19+20+21+22=100!!やっとキタよ!!!


という感じで探せば、100という大き目の値でも何とか探すことが出来そうだ。
しかしながら、「nで割った周辺を探す」というのはプログラミングするには少々曖昧だ。この考え方がベースで、もっと確実性の高いアルゴリズムがあるはずなのだ。


つづく