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

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

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

ABC145(A~C)

A - Circle

https://atcoder.jp/contests/abc145/tasks/abc145_a
かかった時間 2分

r=int(input())

print(r*r)

B - Echo

https://atcoder.jp/contests/abc145/tasks/abc145_b
かかった時間 2分30秒

N=int(input())
S=str(input())

if S[0:N//2]==S[N//2:]:
    print("Yes")
else:
    print("No")

C - Average Length

https://atcoder.jp/contests/abc145/tasks/abc145_c
かかった時間 35分

import itertools
import math

N=int(input())
List=[]

for i in range(N):
    x,y=map(int,input().split())
    List.append([x,y])
    
    
ans=0
count=0
for i in itertools.permutations(List):
    sum=0
    for j in range(len(i)-1):
        x=(i[j][0]-i[j+1][0])**2
        y=(i[j][1]-i[j+1][1])**2
        sum+=math.sqrt(abs(x+y))
    ans+=sum
    count+=1
    
print(ans/count)

おまけ

DはTLEで解けませんでしたが一応載せておきます

X,Y=map(int,input().split())
List=[list("." for j in range(Y+1)) for i in range(X+1)]
List[X][Y]="g"

ans=0
def dfs(x,y):
    global ans
    if not(0<=x<X+1) or not(0<=y<Y+1) or List[x][y] == "#":
        return
    
    if List[x][y]=="g":
        ans+=1
    else:
        List[x][y]="#"
        
    dfs(x+1,y+2)
    dfs(x+2,y+1)
    
dfs(0,0)
print(ans)

下記記事を参考にDFSで実装してみました
https://nashidos.hatenablog.com/entry/2020/01/04/234842