Port 53

明日のための技術メモ

AtCoder ABC158

AtCoder ABC158解いた分だけまとめ。
レート大爆死。30戻ってしまった。 B問題で答え合わなくてそのまま終わった...かなしい

B以降は大会後AC。

目次

A. Station and Bus

問題文 f:id:saturn-glave:20200314220402p:plain

入力を見て全部同じ文字だったらバスはいらないので、Noになる。
入力をリストにしてsetで重複削除してリストの長さで判定した。

ACしたコード

#coding:utf-8
s = input()
l = []
for i in s:
    l.append(i)

s_len = set(l)

if len(s_len) == 2:
    print('Yes')
else:
    print('No')

B. Count Balls

問題文 f:id:saturn-glave:20200314220645p:plain

ボールの個数について、a,bともに0があり得ることを見落とした。
ボールは必ず青→赤の順場なので、青a個と赤b個を1セットとして、
n番目に従って端数を求める。ボールは青しか考えないので、
端数は青ボールの個数か、nを(a+b)で割った余りのうち小さい方になる。

ACしたコード

#coding:utf-8
n, a, b = map(int, input().split())

if a == 0 and b == 0:
    print(0)
    exit()

count = n // (a+b)
mod = n % (a+b)

ans = a * count + min(mod, a)
print(ans)

C. Tax Increase

問題文 f:id:saturn-glave:20200314221503p:plain

よく考えたらa,bともに高々100以下で、安い方を求めるので、
元の税込み価格はどう頑張っても1008円までにしかならない。 1円から1008円まで順に探索して、8%でも10%でも条件成立する価格を探す。

ACしたコード

#coding:utf-8
import math
a, b = map(int, input().split())
ans = -1

#1<= a < b <= 100 なので、税込み価格は最大でも1008円
for price in range(1, 1009):
    if math.floor(price * 0.08) == a and math.floor(price * 0.1) == b:
        ans = price
        break

print(ans)

次は焦らずがんばろ...