Eでしょうもないミスをして結構順位を落とした。
今回A-Cが同程度の難易度だけど、まぁCDEだけ書いていきます。
http://codeforces.com/contest/550/problem/C
問題
最大100桁の整数が与えられる。
ここから何桁か消して8で割れるかを答えよ。
解法
1000は8の倍数であることから、整数が8の倍数かどうかは下3桁で決まる。
よって100桁のうち1~3桁を総当たりで抜き出し、8で割れるものを探せばよい。
他にも色々解法があって、入力値の頭に00を加えたうえで008,016,...,992含むか判定するなどでも良い。
nt L; string S; void solve() { int i,j,k,l,r,x,y,z; string s; cin>>S; FOR(x,S.size()) { if((S[x]-'0')%8==0) return _P("YES\n%c\n",S[x]); } FOR(y,S.size()) FOR(x,y) { i = (S[x]-'0')*10+(S[y]-'0'); if(i%8==0) return _P("YES\n%d\n",i); } FOR(z,S.size()) FOR(y,z) FOR(x,y) { i = (S[x]-'0')*100+(S[y]-'0')*10+(S[z]-'0'); if(i%8==0) return _P("YES\n%d\n",i); } _P("NO\n"); }
まとめ
Div2 Cにしては簡単と思ったけど、Dynamic Scoreのスコア見てもそんな感じだね。