オープンで参加。
先行逃げ切りで良い順位だったけど、もう1問は解けたかった。
http://code-festival-2014-final-open.contest.atcoder.jp/tasks/code_festival_final_a
http://code-festival-2014-final-open.contest.atcoder.jp/tasks/code_festival_final_b
http://code-festival-2014-final-open.contest.atcoder.jp/tasks/code_festival_final_c
A - 50m走
50メートル走のタイムsが与えられる。
平均秒速は何メートル毎秒か。
割るだけ。
void solve() { int i,j,k,l,r,x,y; string s; cin>>i; _P("%.12lf\n",50.0/(double)i); } |||< *B - 暗算ゲーム ある整数が与えられる。 上から奇数桁目の数値を足し、偶数桁目の数値を引く時、最終的に得られる数値はいくらか。 これもやるだけ。 >|cpp| void solve() { int i,j,k,l,r,x,y; string s; cin>>s; x=0; FOR(i,s.size()) { if(i%2) x-=(s[i]-'0'); else x+=(s[i]-'0'); } cout << x << endl; }
C - N進数
f(x)とは、x進数表示で"x"を表現した値を指す。
例えばf(23)=23*2+3=49である。
整数Aが与えられたとき、f(x)=Aとなるような10以上のxはあるか。
xを総当たりしてf(x)を求めればよい。
ll f(ll v) { ll t=0; ll vv=1,ov=v;; while(v>0) { t+=vv*(v%10); vv*=ov; v/=10; if(t>10000000000000000LL) return -1; } return t; } void solve() { int i,j,k,l,r,x,y; string s; ll A,B; cin>>A; for(B=10;;B++) { if(f(B)==A) return _P("%lld\n",B); if(f(B)<0) break; } _P("-1\n"); }
まとめ
このあたりはまだ簡単。