AtCoderのコンテストのときの回答検証
ABCのコンテストしか現状参加していない(現状参加回数3回で灰色コーダー)
162_A
input()が使えるかどうかの問題!!n.count('7')を忘れていたから愚直に分割した。
ABC_162_A.py
n = input()
if n[0] == '7' or n[1] == '7' or n[2] == '7':
print('Yes')
else:
print('No')
ABC_162_A.py
n = input()
n = n.count('7')
if n >= 1:
print('Yes')
else:
print('No')
162_B
FizzとBuzzとFizzBuzzの和を求め,Nまでの総和を求め最後に引く
ABC_162_B.py
n = int(input())
s3 = 0
s5 = 0
s15 = 0
count = 0
for i in range(int(n / 3)):
s3 += (i+1) * 3
for i in range(int(n / 5)):
s5 += (i + 1) * 5
for i in range(int(n / 15)):
s15 += (i + 1) * 15
for i in range(n):
count += (i+1)
print(count-s3-s5+s15)
普通に等比数列(Fizz,Buzz,FizzBuzz)のため$\frac{1}{2}k(a_1+a_k)(kはN以下の項数)$のほうが早いよね
ABC_162_B.py
n = int(input())
Sum = 0.5 * n * (1 + n)
# n < 3やn < 5のときでもint(n/3) = int(n/5) = 0のため問題なし
Sum3_5 = 0.5*(int(n/3)*(3+3*int(n/3))+int(n/5)*(5 + 5*int(n/5)))
Sum15 = 0.5 * (int(n / 15) * (15 + int(n / 15) * 15))
# 問題の回答が整数値のため
print(int(Sum-Sum3_5+Sum15))
162_C
全探索じゃ解けないと考え(a,b,c)の組を考えて解く。(pypyなら全探索でもTLEではなかった)
pattern1
a,b,cが全て一致(a==b==c):gcd(a,b,c) = a
pattern2
a,b,cが2数が一致(a==b!=c):gcd(a,b,c) = gcd(a,c)
3箇所から1つ選ぶため${}_3C_1$のため3倍
pattern3
a,b,cが全て一致せず(a!=b!=c):gcd(a,b,c)
a,b,cの並び替えが存在するため6倍
next_permutation的なのがあったほうが最後は早いはず
ABC_162_C.py
import math
k = int(input())
wa = 0
for a in range(k):
wa += (a + 1)
for a in range(k):
for b in range(k):
if a != b:
wa += 3 * math.gcd(a + 1, b + 1)
for a in range(k):
for b in range(a):
for c in range(b):
wa += 6*math.gcd(math.gcd(a+1, b+1), c+1)
print(wa)