超初心者がAtcoder ProblemsのB問題を86から96まで解いてみる件【10割自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです！！
<h1>B - 1 21</h1> https://atcoder.jp/contests/abc086/tasks/abc086_b

```python:practice.py
a,b = input().split()
num = a+b
if (int(num)**0.5).is_integer():
    print("Yes")
else:
    print("No")
```

数字を0.5乗してルートを乗っけるのと同じことをして、もし平方数だったら、integer型になるのでis_integer()で判定する

<h1>B - Coins</h1> https://atcoder.jp/contests/abc087/tasks/abc087_b

```python:practice.py
a = int(input())
b = int(input())
c = int(input())
x = int(input())
cnt = 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:
                cnt += 1
print(cnt)
```

脳死全探索で解決、a,b,cの数も含めないと行けないのでrangeの数に1を足しています。

<h1>B - Card Game for Two</h1> https://atcoder.jp/contests/abc088/tasks/abc088_b

```python:practice.py
n = int(input())
cards = sorted(list(map(int, input().split())), reverse=True)
a = 0
b = 0
turn = 0
for card in cards:
    if turn % 2 == 0:
        a += card
    else:
        b += card
    turn += 1
print(a-b)
```

アリ姐からボブの順で強いカードをとってくので、受け取ったカードの数字をリストにしてsortで大きい順に並べ替える。そしてturn変数を作って順番の判定をする

<h1>B - Hina Arare</h1> https://atcoder.jp/contests/abc089/tasks/abc089_b

```python:practice.py
n = int(input())
colours = set(input().split())
if len(colours) == 3:
    print("Three")
else:
    print("Four")
```

set型にすれば勝手に重複を消してくれるのよ、そしてlenで要素の数を求めてそのまま出力するだけ

<h1>B - Palindromic Numbers</h1> https://atcoder.jp/contests/abc090/tasks/abc090_b

```python:practice.py
a,b = map(int, input().split())
cnt = 0
for i in range(a,b+1):
    i = str(i)
    if i[0] == i[4]:
        if i[1] == i[3]:
            cnt += 1
print(cnt)
```

aもbも5桁と約束されてるので一度str型にして１桁目と5桁目が一緒に数字か等を判定していく

<h1>B - Two Colors Card Game</h1> https://atcoder.jp/contests/abc091/tasks/abc091_b

```python:practice.py
n = int(input())
blue = [input() for _ in range(n)]
m = int(input())
red = [input() for _ in range(m)]
ans = 0
for i in range(n):
    gain = blue.count(blue[i])
    lose = red.count(blue[i])
    ans = max(ans, gain-lose)
print(ans)
```

ansをあらかじめ0にしておくことで絶対に負の数になることがない。gainで青いカードにある特定の文字列の数を調べる、そしてloseで赤いカードにある特定の文字列の数を調べる。最後に現在の最大値と比べる

<h1>B - Chocolate</h1> https://atcoder.jp/contests/abc092/tasks/abc092_b

```python:practice.py
n = int(input())
d,x = map(int, input().split())
spans = [int(input()) for _ in range(n)]
total = x
for i in range(n):
    total += ((d-1) // spans[i]) + 1
print(total)
```

１日目は全員チョコを食べられるので、日数から１日目を抜くということでd-1にしてその後にそれぞれの人のチョコレートを食べられる日にちの間隔で割る。最後に１日目に食べられるチョコレートの数を加える

<h1>B - Small and Large Integers</h1> https://atcoder.jp/contests/abc093/tasks/abc093_b

```python:practice.py
a,b,k = map(int, input().split())
if (b-a+1) < (2*k):
    numbers = [num for num in range(a,b+1)]
else:
    numbers1 = [num for num in range(a,a+k)]
    numbers2 = [num for num in range(b-k+1,b+1)]
    numbers = numbers1 + numbers2

for number in numbers:
    print(number)
```

最初に重複する番号がないかを判定する（例えば、入力値が4 8 3の場合は456と678で6が重複してしまう）、もし重複がある場合は範囲内のすべての数を出力するだけ。もし無い場合は最初にaからa+k番目までに大きい数を求めて、次にb-k+1からb+1までに大きい数を求めて、最後に合体する

<h1>B - Toll Gates</h1> https://atcoder.jp/contests/abc094/tasks/abc094_b

```python:practice.py
n,m,x = map(int, input().split())
charge = list(map(int, input().split()))
a = len([i for i in charge if i <= x])
b = len([i for i in charge if i >= x])
print(min(a,b))
```

一度、初期位置より前にある料金所の数と初期位置より後にある料金所の数を調べ上げて、minメソッドを使って少ない方をとって出力する

<h1>B - Bitter Alchemy</h1> https://atcoder.jp/contests/abc095/tasks/abc095_b

```python:practice.py
n,x = map(int, input().split())
ing = [int(input()) for _ in range(n)]
total = n
x -= sum(ing)
total += (x//min(ing))
print(total)
```

すべての種類のドーナツを絶対一個は作らないといけないので、totalの初期値をドーナツの種類と同じ数にして、xから全てのドーナツを一個ずつ作るのに必要な材料を引く。そして材料が一番少ないドーナツを作りまくる！

<h1>B - Maximum Sum</h1> https://atcoder.jp/contests/abc096/tasks/abc096_b

```python:practice.py
numbers = list(map(int, input().split()))
k = int(input())
d = max(numbers)
numbers.remove(max(numbers))
for i in range(k):
    d *= 2
numbers.append(d)
print(sum(numbers))
```

一番をでかい数を操作できる回数2倍し続ければいいだけです、コードが不細工すぎる...