AtCoder Beginner Contest 180

はい。
AtCoder Beginner Contest 180
oooox- 863(+46) ちょっと上がりました。

A - box

PyPy3

n,a,b=map(int,input().split())
print(n-a+b)

問題文通りにN個からA個取り出してB個追加します。

B - Various distances

PyPy3

n=int(input())
l=[abs(int(i)) for i in input().split()]
print(sum(l))
y=0
for i in l:
    y+=i**2
print(y**0.5)
print(max(l))

問題文の指示通りにします。

C - Cream puff

PyPy3

n=int(input())
ans=set([])
i=1
while i**2<=n:
    if n%i==0:
        ans.add(i)
        ans.add(n//i)
    i+=1
 
ans=list(ans)
ans.sort()
for i in ans:
    print(i)

約数を調べます。ループで探します。調べている数の2乗がN以上になったら終わります。。

D - Takahashi Unevolved

PyPy3

x,y,a,b=map(int,input().split())
ans=0
while 1:
    if x*a<=x+b and x*a<y:
        x*=a
        ans+=1
    else:
        ans+=(y-x-1)//b
        break
print(ans)

A倍にするほうが強さが大きくならない間はひたすらA倍にします。1から2倍にし続けたとしても最大の1018までは大したループ回数ではないです。A倍が使えなくなったら、B加算は割り算で求めました。Bで割り切れるときは強さが丁度Yになるので、1引いてからBで割るのがいいと思います。

E問題以降はあとで