AtCoder Beginner Contest 085

はい。
https://beta.atcoder.jp/contests/abc085

A - Already 2018

Python3

print(input().replace('2017','2018'))

2017/1/17とかに影響されないようにごっそりと置換した。。

B - Kagami Mochi

Pyhthon3

n=int(input())
ans=set([])
for i in range(n):
    ans.add(int(input()))
print(len(ans))

大きさが何種類あるかをみればいいと思うのでset型に放り込んだ。。。

C - Otoshidama

Pyhthon3

def chk(l):
    return l[0]*10+l[1]*5+l[2]
 
n,y=[int(x) for x in input().split()]
y//=1000
n-=y%5
ans=[0,n,y%5]
t=n*2
while t>=0:
    t-=1
    if y==chk(ans):
        break
    elif y>chk(ans) and ans[1]>0:
        ans[1]-=1
        ans[0]+=1
    elif y<chk(ans) and ans[1]>4:
        ans[1]-=5
        ans[2]+=5
    elif y>chk(ans) and ans[2]>0:
        ans[2]-=1
        ans[0]+=1
    elif y<chk(ans) and ans[0]>4:
        ans[0]-=5
        ans[2]+=5
        
if y==chk(ans):
    print(*ans)
else:
    print("-1 -1 -1")

もっと省略できるはず。。。百の位以降は使わないので使わないことにした。5で割り切れない端数の円は1000円札使うこと固定になるはずなので端数分は先に除外した。そのあとは一旦は全て5000円札扱いにした。それから金額が足りてなければ1枚ずつ10000円札に、金額が余ったら5枚ずつ1000円札に交換なイメージで適当にうだうだ交換を何回も提出した。。 というかそもそも最初の方で1000円札と10000円札が入れ違ってることに気づいてなかったのがダメなんですけど。。