dwangoコンテスト予選に参加。
Cまではサクサク解けたが、DEが部分点どまりで終了。
http://dwango2015-prelims.contest.atcoder.jp/tasks/dwango2015_prelims_1
http://dwango2015-prelims.contest.atcoder.jp/tasks/dwango2015_prelims_2
A - プレミアム会員
Nか月のうち、最近xか月は月540円、それ以前は月525円払った。
払って金額の総計を答えよ。
x*540 + (N-x)*525を答えるだけ。
int N,X; void solve() { int i,j,k,l,r,x,y; string s; cin>>N>>X; cout<<X*540+(N-X)*525<<endl; }
B - ニコニコ文字列
文字列のうち"25"だけを複数連結して構成できる文字列をニコニコ文字列という。
文字列Sが与えられるので、Sの連続した部分文字列でニコニコ文字列となるものの数を求めよ。
"25"がn個連続していたら、そこからn*(n+1)/2個のニコニコ文字列である部分文字列が生成できる。
ll ret; string S; void solve() { int i,j,k,l,r,x,y; string s; cin>>S; x=0; FOR(i,S.size()) { if((x%2==0 && S[i]=='2') || (x%2==1 && S[i]=='5')) x++; else { ret+=1LL*(x/2)*(x/2+1)/2; x=0; if(x%2==0 && S[i]=='2') x++; } } ret+=1LL*(x/2)*(x/2+1)/2; cout<<ret<<endl; }