2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いつ解いたのか分からない問題が対象でしたので解説・・・正直コードの意図が分からない。

コードの解説

# coding: utf-8
n = int(input())
input_line = [int(input())%7 for _ in range(n)]
z = 0
for q in range(len(input_line)):
    for w in range(q+1,len(input_line)):
        for e in range(w+1,len(input_line)):
            if (input_line[q]+input_line[w]+input_line[e]) % 7 == 0:
                z += 1
print(z)

このコードはごり押しで「3つの整数を足した和が7で割り切れるような組合せがいくつあるか」を確認しています。正直解説できる部分が全くありません。

n = int(input())
input_line = [int(input())%7 for _ in range(n)]
z = 0

まず変数を初期化します。RANK Sの問題を見ているなら標準入力の説明はいりませんね。
配列に格納する前にint(input())%7を行っていますが・・・数を少なくしたところで意味はあるのか。

for q in range(len(input_line)):
    for w in range(q+1,len(input_line)):
        for e in range(w+1,len(input_line)):
            if (input_line[q]+input_line[w]+input_line[e]) % 7 == 0:
                z += 1

すべての配列にある数値を地道に見ています。割り切れたら変数zに1を加えます。

print(z)

最後に変数zを出力して終了です。

感想

いつ解いたのか分かりません。ちなみにこのコード、最適化もされていません。ただの物量ごり押し作戦で解いています。
この作戦だったらC言語系統で書いたほうがいいのではと考えました。
早くするならそもそもアルゴリズムを見直すべきなんだよな・・・。でもこれで通るってことは、Pythonの処理速度は速くなっているということでもあるか。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?