ミラティブ プログラミングコンテスト2025(AtCoder Beginner Contest 414)の解答等の速報的まとめ
問題文通りにシミュレーション
A
n, l, r = map(int, input().split())
ans = 0
for _ in range(n):
x, y = map(int, input().split())
if x l and r y:
ans += 1
print(ans)
そのままやる
ただ、$l$が100を超えていたら文字列を生成せずにToo Longを返さないとエラーになる
B
ans = ""
for _ in range(int(input())):
c, l = input().split()
l = int(l)
if l + len(ans) > 100:
exit(print("Too Long"))
ans += c * l
print(ans)
10進数で回文の数字を生成して、A進数でも回文になるか確かめる
C
from collections import deque
def make_number(lst):
return int("".join(lst))
def check_num(m):
lst = list()
while m:
lst.append(m % a)
m //= a
return lst == lst[::-1]
a = int(input())
n = int(input())
ans = 0
q = deque()
q.append(list())
while q:
lst = q.popleft()
for i in range(0, 10):
if lst == list() and i == 0:
continue
num_1 = make_number(lst + [str(i)] + lst[::-1])
num_2 = make_number(lst + [str(i), str(i)] + lst[::-1])
if num_1 n:
if check_num(num_1):
ans += num_1
if num_2 n:
if check_num(num_2):
ans += num_2
if make_number(lst + [str(i), "0", str(i)] + lst[::-1]) n:
q.append(lst + [str(i)])
print(ans)
家を$M$個のグループにして、各グループの中心に基地局を置く
グループは距離が近いほうからまとめていく
D
n, m = map(int, input().split())
x = list(map(int, input().split()))
x = sorted(set(x))
diff = list()
for x_i, x_j in zip(x, x[1:]):
diff.append(x_j - x_i)
diff.sort(reverse=True)
ans = 0
while len(diff) >= m:
d_i = diff.pop()
ans += d_i
print(ans)
Views: 0