問題はこちら
No.667 Mice's Luck(ネズミ達の運) - yukicoder
本質的には累積和の概念だと思うので★1.5よりは高級だと思うんですがどうなんでしょ
「セーフな箱があといくつ残っているか」を覚えておけば良い
main(){ char s[1<<17]; int n,o; n=strlen(gets(s)); for(i=0;i<n;i++)if(s[i]=='o')o++; for(i=0;i<n;i++){ printf("%f\n",o*100.0/(n-i)); if(s[i]=='o')o--; } }
s[i]%5で、oのとき1,xのとき0になることを使って縮める。
また、ループの終了条件をs[i]にすれば後半のループでnを破壊しても大丈夫
ループをまとめるのはうまくできなかった
n,o,i; char s[1<<17]; main(){ for(gets(s);s[n];o+=s[n++]%5); for(;s[i];o-=s[i++]%5)printf("%f\n",o*1e2/n--); }
105B