0
0

More than 3 years have passed since last update.

AtCoder_ABC

Last updated at Posted at 2020-04-13

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)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0