AtCoder Beginner Contest 145 過去問 (A~C)

参照

atcoder.jp

A問題

問題なく

print(int(input())**2)

B問題

問題なく

n=int(input())
s=input()
 
if n%2!=0: print('No')
elif s[:int(n/2)]==s[int(n/2):]: print('Yes')
else: print('No')

C問題

与えられたN個の座標に対して、
N!通りの経路の組み合わせを算出し、
N!の経路においての平均値を求めます。

itertoolsのpermutationsで配列内のN!通りの組み合わせを列挙してくれます。
permutations = 順列を意味します。
note.nkmk.me

import itertools
import math
 
n = int(input())
lis = [j for j in range(n)]
points = []
 
permutations_lis = itertools.permutations(lis)
for i in range(n):
  x,y=map(int,input().split())
  points.append([x,y])
 
def distance(forw, back):
  return math.sqrt((points[forw][0]-points[back][0])**2+(points[forw][1]-points[back][1])**2)

sum_,k = 0,0
for one_case in permutations_lis:
  k+=1
  for j in range(len(one_case)-1):
    dis = distance(one_case[j],one_case[j+1])
    sum_+=dis
print(sum_/k)