0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ABC63 C - Bugged を解いた

Last updated at Posted at 2021-10-07

abc63_1.png
abc63_2.png
abc63_3.png

ビット探索が頭をよぎったけど、2^100 って無理だな。
OK
じゃあ,if で行こう。

Bugged.py
N = int(input())
S0 = [] #10の倍数
S1 = [] #not 10 の倍数
for _ in range(N):
    s = int(input())
    if s%10 == 0:
        S0.append(s)
    else:
        S1.append(s)

S1.sort()
Total = sum(S0)+sum(S1)

if Total%10 != 0:             #全部足した状態で not 10 の倍数なら答え
    print(Total)
else:
    for i in range(len(S1)):  #not10倍数だけのリスト S1 から小さい順に引いていく
        Total -=S1[i]
        if Total%10 != 0:     #TotalSum%10 != 0 なら最大値
            print(Total)
            break
    else:
        print(0)#26ms

気を付けたのは入力 S。
求めたいのは合計の最大値。
よって、引いていきたいのは not 10 の倍数を一個ずつ引いて試したい。
だから入力時に s1,s2... はデータを受け取る時点で分別した。

例えば、 10,15,25 って入力の場合、小さい順で引いていくと最大値は 25 になる。
でもそれって、15 だけ引けば、最大値は 35 になるよね?的なイメージ。


ちょっとだけ早くなりました。

abc63c.py
N = int(input())
S = [int(input()) for _ in range(N)]

if sum(S)%10 != 0:
    print(sum(S))
else:
    S.sort()
    X = sum(S)
    for i in range(N):
        if S[i]%10 != 0:
            X -= S[i]
            if X%10 != 0:
                print(X)
                exit()
    print(0)#24ms
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?