Codeforces Round #339 (Div.2)
はい。
http://codeforces.com/contest/614
A. Link/Cut Tree
ざっくりと大意
・lからrの区間のkの累乗数を出力する。
l,r,k=map(int,raw_input().split()) t=f=0 while 1: tmp=k**t if l<=tmp<=r: f=1 print tmp, elif tmp>r: break t+=1 if f==0: print -1
コンテスト当時はHack祭だった模様。lが最小、rが最大でのTLE狙いとrがkの累乗数と等しい場合の境界?の判定処理ミス狙いとかが成功していたのを見かけた。
B. Gena's Code
ざっくりと大意
・n国の戦車の\(a_i\)が戦闘に参加している。
・0始まりではなく1,0だけで構成されている数は美しい(但し、1は1回だけ。10のn乗の数ということになるはず)。
・美しくない数は削除されて残らない可能性がある??
・数列aの中には美しい数が少なくともn-1個以上あることが保証される(美しくない数は1つだけ含むか、aは全て美しい数になる。)
n=raw_input() #n,k=map(int,raw_input().split()) l=map(str,raw_input().split()) ans='1' tmp='' for i in l: if i=='0': print 0 exit() elif i[0]=='1' and i.count('0')==len(i)-1: tmp+='0'*(len(i)-1) else: ans=i print ans+tmp
数列aの中の全ての数の積が解になるのがよくわからない。。入力受取でintキャストはそれだけでTLEになるので駄目。出力するのは積だが、数列aの中にあるはずの10の累乗数は桁数、0の個数を文字列で保存しておいてaの中を全てチェックする。美しくない数があったならソレの末尾に保存しておいた0を付け足す。そうでなければ1の末尾に0を付け足す。どこかで0があった場合も例外で0を即時出力で終了できる。
例えば数列aが100 10 55 10だとしたら、0を2個保存、0を1個追加保存(合計3個)、55を例外保存、0を1個追加保存(合計4個)で最後に例外の55の末尾に4個の0を付け足すと解になる。