0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoder Problems Training Easy(31~40)

Last updated at Posted at 2020-08-24

#目次

1~10
11~20
21~30
31~40 ← 今ココ
41~50
51~60
61~70
71~80
81~90
91~100

#31. ABC063 B - Varied

Difficulty:102

元の文字列$\ S\ $の長さを調べておく、これを$\ N\ $とする。
その後、$\ S\ $の重複をなくし、 長さを調べる、 これを$\ M\ $とする。
$\ N=M\ $ならすべての文字が異なっていることが分かる。

s = list(input())
i = len(s)
s = list(set(s))
j = len(s)
if i != j:
    print('no')
else:
    print('yes')

#32. ABC052 B - Increment Decrement

Difficulty:103

最初、$\ x=0\ $の状態から、$\ N\ $回の操作を実際に行う。
$\ S_i\ $の操作を行うたび、最大値か確認しておく。

n = int(input())
s = input()
x = 0
ans = 0
for i in range(n):
    if s[i] == 'I':
        x += 1
    else:
        x -= 1
    ans = max(ans,x)
print(ans)

#33. ABC084 B - Postal Code

Difficulty:104

$\ S_1 \dots S_A\ $の範囲に - が存在しない。
$\ S_{A+1}\ $が - である。
$\ S_{A+2} \dots S_{A+B+1}\ $の範囲に - が存在しない。
郵便番号の形式となる 3 つの条件に当てはまるか調べる。

a,b = map(int,input().split())
s = input()
if '-' in s[:a]:
    print('No')
elif s[a] != '-':
    print('No')
elif '-' in s[a+1:]:
    print('No')
else:
    print('Yes')

#34. ABC087 B - Coins

Difficulty:109

500 円玉 $i$ 枚、 100 円玉 $j$ 枚、 50 円玉 $k$ 枚の合計金額が $X$ になるか順に計算する。

a = int(input())
b = int(input())
c = int(input())
x = int(input())
ans = 0
for i in range(a+1):
    for j in range(b+1):
        for k in range(c+1):
            if 500*i + 100*j + 50*k == x:
                ans += 1
print(ans)

#35. ABC071 B - Not Found

Difficulty:111

文字列$\ S\ $から重複した文字を消しておき、$\ a \dots z\ $のアルファベットが存在するか順に調べる。
存在しない場合はその文字が答えになるが、全て存在した場合は None になる。

s = list(input())
s = set(s)
m = 'abcdefghijklmnopqrstuvwxyz'
for i in range(len(m)):
    if not m[i] in s:
        print(m[i])
        exit(0)
print('None')

#36. ABC127 C - Prison

Difficulty:193

全てのゲートを 1 枚のカードで通過する場合、$\ \max(L) \le P \le \min(R)\ $のカードを持っていればよい。
$\ \max(L)=4、\min(R)=3\ $の場合、$\ \min(R)\ $を通るために$\ P \le 3\ $にすると$\ \max(L)\ $が通れず、$\ \max(L)\ $を通るために$\ P \ge 4\ $にすると$\ \min(R)\ $が通れず、 1 枚で通れないことが分かる。

n,m = map(int,input().split())
k = [list(map(int,input().split())) for i in range(m)]
l,r = [list(i) for i in zip(*k)]
x = max(l)
y = min(r)
print(max(y-x+1,0))

#37. ABC141 C - Attack Survival

Difficulty:120

点数が$\ 0\ $以下になると脱落ということは、$\ Q\ $問あるうち$\ K-1\ $問は正解できなくてもよい。
つまり、$\ Q-K+1\ $正解すれば勝ち抜けということになる。
各参加者の正解数を数えて、勝ち抜けか脱落かを判別する。

n,k,q = map(int,input().split())
a = list(int(input()) for i in range(q))
z = [0] * n
for i in range(q):
    z[a[i]-1] += 1
for i in range(n):
    if z[i] >= q - k + 1:
        print('Yes')
    else:
        print('No')

#38. ABC123 B - Five Dishes

Difficulty:118

全ての料理が届く時刻を最も早くするには、理想は最後の料理が$\ A \mod 10=1\ $で届くことであり、避けたいのは最後の料理が$\ A \mod 10=0\ $で届くことである。
$\ 11,20\ $の料理なら、届く時間は$\ 11,20\ $で 40 、$\ 20,11\ $で 31 とかなりの差が出てしまう。
全ての料理の 1 の位の値を調べておき、 0 以外で一番小さい数字が最後の料理になるよう調整する。
なお、1 の位が全て 0 なら全ての時間を合計するだけでよい。

a = []
for i in range(5):
    a.append(int(input()))
p = 10
for i in range(5):
    if a[i] % 10 != 0:
        p = min(p,a[i]%10)
ans = 0
for i in range(5):
    if a[i] % 10 != 0:
        if a[i] % 10 == p:
            ans += a[i]
            p = 10
        else:
            ans += a[i] - a[i] % 10 + 10
    else:
        ans += a[i]
print(ans)

#39. ABC134 C - Exception Handling

Difficulty:124

出力する数は 2 つだけに絞れる。
$\ A_i \neq \max(A)\ $の場合、最大値は$\ \max(A)\ $。
$\ A_i= \max(A)\ $の場合、最大値は 2 番目に大きい数。
ソートなどを使って、あらかじめ上二つの値を調べておく。
例えば$\ 1,2,3,4,5,6\ $なら出力は$\ 6,6,6,6,6,5\ $となる。

n = int(input())
a = list(int(input()) for i in range(n))
b = sorted(list(a))
x = b[-1]
y = b[-2]
for i in range(n):
    if a[i] != x:
        print(x)
    else:
        print(y)

#40. AGC002 A - Range Product

Difficulty:64

$\ a \le 0 \le b\ $なら、 0 を掛けることになるので答えは Zero になる。
$\ 0<a \le b\ $なら、正のみを掛けることになるので答えは Positive になる。
$\ a \le b<0\ $なら、$\ - \times -=+\ $ になることから、$\ 負の個数 \mod 2=0\ $になる場合、答えは Positive になり、そうでないなら Negative になる。

a,b = map(int,input().split())
if a <= 0 <= b:
    print('Zero')
elif 0 < a <= b:
    print('Positive')
else:
    if (b - a + 1) % 2 == 0:
        print('Positive')
    else:
        print('Negative')
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?