はじめに
今回は問題が簡単だったのでA~Cは解けましたが、Dまで解けるべきでした。
A問題
考えたこと
偶数を作るには、偶数+偶数、奇数+奇数しかないのでNとMのそれぞれで$_nC _r$、$_mC _r$しています。コンビネーションの計算は自分で実装してもいいですが、scipyにあるのでそれを使いました。
from scipy.misc import comb
n, m = map(int,input().split())
ans = comb(n,2,exact=True) + comb(m,2,exact=True) #exact=Trueで整数値が返される
print(ans)
B問題
考えたこと
回文の問題が苦手でA解いた後に放置していました。Sが回文であるのなら、s.reverse()==sになることを利用して解きました。強い回文の条件はsをスライスして、上と同じことをしました。n
s = list(str(input()))
checker = 0
n = len(s)
new_s = list(reversed(s))
if s == new_s:
checker += 1
split_s = s[0:(n-1)//2]
new_s = list(reversed(split_s))
if new_s == split_s:
checker += 1
split_s = s[(n+2)//2:n]
new_s = list(reversed(split_s))
if new_s == split_s:
checker += 1
if checker == 3:
print('Yes')
else:
print('No')
C問題
考えたこと
体積が最大になるのは、立方体になるときなので$(L/3)^3$で終わり。精度が怖かったけどなにもしなくても通った。
l = int(input())
print((l/3)**3)
D問題
問題
1WA、4TLE
考えたこと
解けなかった
for文で$A_i$を抜いたAでコンビネーションを計算しようとしたけど、TLEが出て死んだ。
from scipy.misc import comb
n = int(input())
a = list(map(int,input().split()))
a_s = set(a)
for i in range(n):
l = a[i]
a[i] = 'X'
ans = 0
for j in a_s:
ans += comb(a.count(j),2,exact=True)
print(ans)
a[i] = l
まとめ
勉強不足なのとBを解くことをあきらめてしまったことが敗因。
おやすみなさい。