AtCoder Beginner Contest 125

A - Biscuit Generator

a, b, t = [int(a) for a in input().split()]

result = ((t + 0.5) // a) * b
print(int(result))

B - Resale

n = int(input())
V = [int(a) for a in input().split()]
C = [int(a) for a in input().split()]

diff = [v - c for v,c in zip(V, C) if v - c > 0]
result = int(sum(diff))
print(result)

C - GCD on Blackboard

n = int(input())
A = [int(a) for a in input().split()]
A.sort()

def func():
    for i in range(A[1], 0, -1):
        yellow_card = 0
        for a in A:
            if a % i > 0:
                yellow_card += 1
            if yellow_card >= 2:
                break
        if yellow_card < 2:
            return i

result = func()
print(result)

D - Flipping Signs

 j, k - 1 の間の全ての整数  i に対して「 A_i A_{i+1} -1 を乗算する」操作を繰り返すと、 最終的には、両端の  A_j A_k だけが符号を反転され、他の値は変化しません。

従って、問題文の操作を次のように置き換えても等価な問題になります。

操作:  1 \leq j, k \leq N - 1 を満たす整数  j, k を選ぶ。  A_j A_k -1 を乗算する。

 A_i の中に負数が偶数個あれば、操作を繰り返して全てを正数に変えることができます。
 A_i の中に負数が奇数個あれば、操作を繰り返して任意の1つ以外全てを正数に変えることができます。

n = int(input())
A = [int(a) for a in input().split()]

num_negative = sum(a < 0 for a in A)
A_abs = [abs(a) for a in A]

if num_negative % 2 == 0:
    result = sum(A_abs)
else:
    result = sum(A_abs) - 2 * min(A_abs)

print(result)