AtCoder ABC 162の復習
さてさて、毎度おなじみになってきました。
Cまで完答できるかな??
A
入力を文字列にみたてて1桁ずつ確認しました
N = input() J = "No" for i in N: if i == "7": J = "Yes" break print(J)
B
難しく考えず、1から順番に3と5で割れるかを確認して割れなければ足していく
N = int(input()) sum = 0 for i in range(1, N+1): print(i) if i % 3 == 0: pass elif i % 5 == 0: pass else: sum += i print(sum)
C
正直問われているところからあまりぴんとこず、おとなしく解説記事や他の方の回答を見てました
qiita.com
pythonは最小公倍数を出力できるmath.gcdがあるので使います。
また、3重ループしてgcdの中でgcdを使うと計算量的に重いので、2重ループの値を保持して使っています
import math N = int(input()) sum = 0 for i in range(1, N+1): for j in range(1, N+1): p = math.gcd(i, j) for k in range(1, N+1): sum += math.gcd(p, k) print(sum)
今回、C問題がわからず解説に頼ってしまいました
こいつは理解したぞ!
ではまた次回