初心者のプログラミング日記

プログラミング初心者の日記

プログラミングに関することを書いていきます。

ABC142(A~C)

A - Odds of Oddness

https://atcoder.jp/contests/abc142/tasks/abc142_a
かかった時間 3分

N=int(input())
K=0
for i in range(1,N+1):
    if i%2!=0:
        K+=1
        
print(K/N)

B - Roller Coaster

https://atcoder.jp/contests/abc142/tasks/abc142_b
かかった時間 1分30秒

N,K=map(int,input().split())
h=list(map(int,input().split()))
ans=0

for i in h:
    if i>=K:
        ans+=1
        
print(ans)

C - Go to School

https://atcoder.jp/contests/abc142/tasks/abc142_c
かかった時間 9分

N=int(input())
A=list(map(int,input().split()))
List=[]
for i in range(1,N+1):
    num=A.index(i)
    List.append(num+1)
    
print(" ".join(str(i) for i in List))

おまけ

D問題はわからなかったので解説を見て自分なりに解いてみました

import math
A,B=map(int,input().split())
#最大公約数
max=math.gcd(A,B)
List=[]

for i in range(1,max+1):
    if max%i==0:
        List.append(i)
  
ans=0     
#素数判定
def main(x):
    for i in range(2,x):
        if x%i==0:
            return False
    return True
    
for i in List:
    if i<=3:
        ans+=1
    else:
        if main(i):
            ans+=1
        
print(ans)

解き方としては、まずAとBの最大公約数を求める。
そして、その最大公約数の公約数の素数の数が答えになるそうです。