こんにちは, Shinoryoです.
今回はAtCoder Beginner Contest 180を, Pythonで解いてみた結果を書き連ねていこうと思います.
AtCoder Beginner Contest 180 - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
A - box
出力すべき解答は
n, a, b = [int(i) for i in input().split()] | |
print(n-a+b) |
B - Various distances
次の2つの配列を用意しておくと便利です.
の絶対値を小さい順に並べた配列- 上の配列の各要素を二乗した配列
sorted()で並べ替えた配列の最後の値(=最大値)を表示するには[-1]とします.
n = int(input()) | |
absx = sorted([abs(int(i)) for i in input().split()]) | |
squaredx = [i**2 for i in absx] | |
print(sum(absx)) | |
print(sum(squaredx)**(1/2)) | |
print(absx[-1]) |
C - Cream puff
すなわち,
n = int(input()) | |
for i in range(1,n+1): | |
if n%i == 0 : | |
print(i) |
(例えば,
出力は昇順で並べ替える必要があるので, 公約数のリストを一度配列に格納して, sorted()でソートします.
n = int(input()) | |
answer = [] | |
i = 1 | |
while i*i <= n : | |
if n%i == 0 : | |
answer.append(i) | |
if i*i != n : | |
answer.append(int(n/i)) | |
i += 1 | |
answer = sorted(answer) | |
for i in range(int(len(answer))): | |
print(answer[i]) |
D - Takahashi Unevolved
強さが
- 強さ
があまり大きくないときは, 強さが 増えるよりも強さが 倍になった方が, 強さの増加を抑えられる. ゆえに, 強さを 倍にする操作を行う(カコモンジムに通う). - 強さ
が十分大きいときは, 強さが 倍になるよりも強さが 増えた方が, 強さの増加を抑えられる. ゆえに, 強さを 増やす操作を行う(AtCoderジムに通う).
「強さ
強さ
x, y, a, b = [int(i) for i in input().split()] | |
exp = 0 | |
# bを足すよりもaをかけた方が経験値が稼げるパターンまで, xを増やし続ける | |
# (ある段階でbを足した方が経験値が稼げるようになると, それ以降はbを足した方が経験値が稼げる) | |
while True: | |
if x*a >= y or x*a >= x+b : | |
break | |
exp += 1 | |
x *= a | |
# 残り分はbを足す | |
exp += (y - x) // b | |
# 上の計算だとbを足し続けた結果yになる可能性もあるので, それを確認する | |
if (y-x) % b == 0: | |
exp -= 1 | |
print(exp) |
E以降
E以降は私の能力不足故に省略いたします.
0 件のコメント:
コメントを投稿 (Please feel free to ask me about your questions! You can use Japanese or English in the comments.)