ABC169 - Atcoder/Python精進のための解説メモ

2020/11/26

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.

解答

まだ解いてません

要点メモ