それはプログラミングの質問からです。
質問は次のとおりです。
数の配列は、除算する必要のある数kとともに与えられます。そして、それらの要素の合計がkで割り切れるように、その配列から要素を選択する必要があります。これらの要素の合計は、可能な限り大きくする必要があります。
入力:
最初の行nで、要素の数を示します。
次の行にn個の数字が表示されます。
次の行でkが与えられ、それによって除算する必要があります。
出力:
その配列から要素を選択することによって可能な最大の合計stsumはkで割り切れます。
サンプル入力:
5
1 6 2 9 5
8
サンプル出力:
16
16は複数の数値の組み合わせで取得できますが、ここでは最大合計のみを考慮していることに注意してください。
私の提案する解決策:
配列をトラバースし、次のように、指定された入力配列の配列bの累積合計を維持します。
b=[1 7 9 18 23]
配列bの数値のmodをkで取得し、に格納します。
c=[1 7 1 2 7]
ここで、cで同じ値を持つ数値、つまりインデックス0とインデックス2。インデックス1とインデックス4。これですべてのソリューションが得られました。答えは次のようになります。
max(b[2]-b[0],b[4]-b[1])
そして、3つのインデックスがcで同じ値を持つ場合、つまり、
c=[1 2 3 1 1 2]
答えは
max(b[4]-b[0],b[5]-b[1])
基本的に、その番号の左端のオカレンスを右端のオカレンスから減算します。
私の解決策は、連続する要素がある場合にのみ機能します。要素の合計はkで割り切れます。正しい解決策の説明を期待する