Croc Champ 2012 - Round 1
はい。
http://codeforces.com/contest/173
A. Rock-Paper-Scissors
ざっくりと大意
・じゃんけんでNikephorosが上の行の手、Polycarpusが下の行の手を出す
・n回ジャンケンするので手を使い切ったらまた先頭からループ
・それぞれの勝利数を半角スペース開けて一行で出力
方針のようなもの
・ゲーム数が多くなると時間が全然足りなくなる ・なので互いの手数の最小公倍数のゲーム数が終わるとお互いにまた一手目からになるのを利用してその分は計算を省略させる
n=int(raw_input()) Nike=list(raw_input()) Poly=list(raw_input()) a,b=max(len(Nike),len(Poly)),min(len(Nike),len(Poly)) def gcd(a,b): while a%b: a,b=b,a%b return b def lcm(a,b): return a*b/gcd(a,b) chk=lcm(a,b) def play(m,Nike,Poly): ni=po=0 for i in range(m): if Nike[i%len(Nike)]=='R' and Poly[i%len(Poly)]=='S': po+=1 elif Nike[i%len(Nike)]=='R' and Poly[i%len(Poly)]=='P': ni+=1 elif Nike[i%len(Nike)]=='S' and Poly[i%len(Poly)]=='R': ni+=1 elif Nike[i%len(Nike)]=='S' and Poly[i%len(Poly)]=='P': po+=1 elif Nike[i%len(Nike)]=='P' and Poly[i%len(Poly)]=='S': ni+=1 elif Nike[i%len(Nike)]=='P' and Poly[i%len(Poly)]=='R': po+=1 return ni,po if n<=chk: ans=play(n,Nike,Poly) print ans[0],ans[1] else: t=n/chk k=n%chk ta=play(chk,Nike,Poly) ka=play(k,Nike,Poly) print (ta[0]*t)+ka[0],(ta[1]*t)+ka[1]