ABC169 - Atcoder/Python精進のための解説メモ
2022/12/27
ABC169 - A.Multiplication 1
AtCoder公式 | ABC169 - A.Multiplication 1解答
a, b = map(int, input().split())
print(a * b)
要点解説メモ
- やるだけ
ABC169 - B.Multiplication 2
AtCoder公式 | ABC169 - B.Multiplication 2解答
n = int(input())
aaa = sorted(map(int, input().split()))
ans = 1
limit = 10 ** 18
for a in aaa:
ans *= a
if ans > limit:
ans = -1
break
print(ans)
要点解説メモ
- 良問な気がする
- pythonだと計算はできるが時間が間に合わない
- 0が含まれる場合を先に処理し、降順に計算することで計算量を減らす対策をする
ABC169 - C.Multiplication 3
AtCoder公式 | ABC169 - C.Multiplication 3解答
from decimal import Decimal, ROUND_DOWN
a, b = map(lambda x: Decimal(x), input().split())
print(Decimal(a * b).quantize(Decimal('1.'), rounding=ROUND_DOWN))
別解
from decimal import Decimal
a, b = map(str, input().split())
num = list(str(Decimal(a) * Decimal(b)))
ans = ''
for i in num:
if i == '.':
break
ans += i
print(ans)
別解
s = input().split()
a = int(s[0])
b, c = map(int, s[1].split('.')) if '.' in s[1] else map(int, [s[1], 0])
print(a * b + a * c // 100)
要点解説メモ
- 色々な解き方ができるとよさそ
- pythonの標準ライブラリのdecimalに慣れておきたい
- decimalを使わなくてもstr型を駆使して"."を基準に処理できる
ABC169 - D.
AtCoder公式 | ABC169 - D.解答
まだ解いていません