AtCoder Beginner Contest 150 過去問(A~C)
参照
A問題
難なく突破。
k,x = map(int, input().split()) if 500*k>=x: print('Yes') else: print('No')
B問題
A問題くらい簡単でした。
input() print(input().count('ABC'))
C問題
N個の数字で形成された順列が用意され、
順列にはN!通りの並び順が存在します。
与えられたpとqの順列が小さい順から何番目の順列が計算し、
その差を求めるというのもの。
方法自体は頭に浮かんでましたが、
実装に時間がかかってしまいました。
一桁目を知ればだいたい順列がどの位置にいるかわかります。
二桁目を知ればさらに具体的な位置がわかります。
三桁目は・・・
という風に要素の位置を数字を元に探索していきます。
これでメモリも時間も節約できます。
n = int(input()) p = list(map(int, input().split())) q = list(map(int, input().split())) num_,j = [1],1 for i in range(1,n+1): j*=i num_.append(j) def cul(n_, lis_): l=[] for i in range(1,n+1): l.append(i) sum_=0 for i in range(1,n_): lenl=len(l)