33%(10/30)ちなみにiの大きさはどれくらいでしょうか。20程度ならば全ての組合せに対して合計値を計算し、条件に合うものを表示させて行けばOKです。tintagelさんのおっしゃる通り。iが40程度になるとこの方法ではかなり計算時間的にきついので何らかの工夫をする必要があります。ランダムに並んでいると言う数字はどの様な特徴があるのかに注目します。...続きを読むちなみにiの大きさはどれくらいでしょうか。20程度ならば全ての組合せに対して合計値を計算し、条件に合うものを表示させて行けばOKです。tintagelさんのおっしゃる通り。iが40程度になるとこの方法ではかなり計算時間的にきついので何らかの工夫をする必要があります。ランダムに並んでいると言う数字はどの様な特徴があるのかに注目します。-100から100の範囲に収まっているとか、もっと広い範囲にばらついているとか、負の数より正の数が圧倒的に多いとか。いうところから計算量を削れるかもしれません。出力のサイズにも注意しなければいけないでしょう。極端な話、i=40でランダムに並んでいる数字はすべて1、合計値=20になる組合せは?と言う問題を解こうとしたとき出力するべき組合せの数はおよそ10^11個になります。表示させるだけでも何日も掛かってしまいそうな数字です。出力サイズがめちゃくちゃに大きくなりそうなら出力の形式にもなにか工夫が必要でしょう。いうことで計算時間を気にする必要があるなら1、データの数はどれくらいか2、データの値のばらつき具合はどんな感じか3、出力サイズはどれくらいになりそうかというのを教えてもらえると、こちらも考えやすいです。46%(643/1383)手元のアルゴリズム辞典では、2進数を利用して解くやり方が紹介されています。順に1ずつ足していきます。それぞれの過程で1の位置と対応するデータを取り出せば、8個のデータの全ての組み合わせが判定できるわけです。...続きを読む手元のアルゴリズム辞典では、2進数を利用して解くやり方が紹介されています。順に1ずつ足していきます。それぞれの過程で1の位置と対応するデータを取り出せば、8個のデータの全ての組み合わせが判定できるわけです。面白そうなのでちゃちゃっと作ってみました。長整数型を使って最大31個の数値の組み合わせを得ます。ちなみにデータ数を31と指定する(N=30)と、40億以上の組み合わせを走査しなくてはならなくなる為、開始したら最後、待てど暮らせど終了しない事態に陥ると思います。