君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

Codeforces Beta Round #51

はい。最終更新日:2014/05/19
http://codeforces.com/contest/55

A. Flea travel

implementation,math

ざっくりと大意

・円に並んだ座布団の上にノミがいる
・k回目のジャンプでk-1個目に移動。時間は無限にある
・ノミは全て座布団の上に乗るか?

方針のようなもの

・2n回目のジャンプでスタート地点に戻って着地点がループするらしいのでソレを利用する

n=input()
l=[0 for _ in range(n)]
m=0
for i in range(2*n):
    m=(m+i)%n
    l[m]=1
print 'NO' if l.count(0) else 'YES'

コンテスト時間中解いてる人でソレを利用している人が沢山はいないっぽいのであんまり有名じゃない法則なのかもしれないけどよくわからない
いちお参考先
http://codeforces.com/blog/entry/1110 と思ったら2nじゃなくてnでもいいらしいような
http://spinda2.blog48.fc2.com/blog-entry-405.html

B. Smallest number

ざっくりと大意

・4つの数と3つの2項演算子を使った結果が最小なのは幾つか??
・a,b,c,dは自由に入れ替えできるけど、演算子は不自由ぽいようなよくわからない

方針のようなもの

・a,b,c,d入れ替えはitertools使えば良かったけど、計算のルールが良く分からず
・結局は他の人の回答見て書き直してたらなんとかAC

import itertools
ans=10000000000000
n=map(str, raw_input().split())
x=map(str, raw_input().split())
nl=list(itertools.permutations(n))
nl=set(nl); nl=list(nl)
for i in range(len(nl)):
    e='(('+nl[i][0]+x[0]+nl[i][1]+')'+x[1]+nl[i][2]+')'+x[2]+nl[i][3]
    f='('+nl[i][0]+x[0]+nl[i][1]+')'+x[2]+'('+nl[i][2]+x[1]+nl[i][3]+')'
    ans=min(ans,eval(e),eval(f))
print ans