AtCoder Beginner Contest 125

はい。
https://atcoder.jp/contests/abc125
ooox 928(-9)でした。

A - Double Helix

Python3

a,b,t=map(int,input().split())
print(t//a*b)

t//aでAの倍数秒後を求めてB枚との積が解になるはず。0.5がどんな意味があったのかはわからず。

B - Resale

Python3

n=int(input())
v=[int(i) for i in input().split()]
c=[int(i) for i in input().split()]
ans=0
for i in range(n):
    if v[i]-c[i]>0: ans+=v[i]-c[i]
print(ans)

価値>コストの宝石を全部取る。

C - GCD on Blackboard

Python

def div(n):
    divisors = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n//i)
 
    return divisors
 
n=int(input())
at=[int(i) for i in input().split()]
a=set(at)
d={}
for i,j in enumerate(a):
    t=div(j)
    for k in t:
        if k in d:
            d[k]+=1
        elif i==0 or k not in d:
            d[k]=1
ans=1
for i in d:
    x=0
    for j in at:
        if j%i: x+=1
    if x<2: ans=max(ans,i)
print(ans)

約数全部列挙してからN-1個以上で共通している約数の最大のものを解にしました。約数列挙は https://qiita.com/LorseKudos/items/9eb560494862c8b4eb56 からです。ありがとうございます。

D - Flipping Signs

Python3

int(input())
a=[int(i) for i in input().split()]
b=[abs(int(i)) for i in a]
c=[int(i) for i in a if i<0]
print(sum(b)-[0,min(b)*2][len(c)%2])

負の数が奇数個ならどんなに操作を繰り返して工夫しても1つだけ負の数が残る、偶数個なら負の数が全て正の数になる。奇数個なら絶対値の総和から最小の数を2回引いたものが解、偶数個ならそのまま絶対値の総和が解。