Flying Cat Penguin

ゆるゆる仕事、ソフトウェアテスティング関連のことについて綴ります。

AtCoder 修行日記#35

35日目
ABCのB問題を実施中。

勉強用のコンテンツはここから。
https://kenkoooo.com/atcoder/#/table/

進捗と一言感想

[B問題] 1問(残り29問)

ABC062:Picture Frame

特になし。

[C問題] 1問(残り164問)

ABC162:Sum of gcd of Tuples (Easy)

最初は、下記の参考を元に実装。ただし、時間切れ…。(2205 ms)
工夫が必要だけど思いつかず、他の方のAC提出を参考にする。

参考:
Pythonで最大公約数と最小公倍数を算出・取得 | note.nkmk.me

from functools import reduce
import math
 
def gcd(*numbers):
    return reduce(math.gcd, numbers)
 
k = int(input())
 
sum = 0
for a in range(1,k+1):
  for b in range(1,k+1):
    for c in range(1,k+1):
      sum += gcd(a, b, c)
 
print(sum)

[修正後]

import math

k = int(input())

sum = 0
for a in range(1,k+1):
  for b in range(1,k+1):
    ab = math.gcd(a,b)
    for c in range(1,k+1):
      sum += math.gcd(ab, c)

print(sum)

→こちらは、1446 msだったので、2秒以内。ブログに記載されていた関数をかませると冗長になる典型でした。(悲しい…)
 それに、3個以上を考える場合は、2つの最小公約数をその分だけ一つずつ再計算するだけで良かった。

目標
  • まず、今年中に茶色コーダー
学習方針

以上。