gotutiyan’s blog

競技プログラミングをやったりopenframeworksでお絵かきをしたりしています。

yukicoder N0.667 Mice's Luck(ネズミ達の運)

問題
No.667 Mice's Luck(ネズミ達の運) - yukicoder

解説
#247274 No.667 Mice's Luck(ネズミ達の運) - yukicoder
i番目のネズミに関する確率は、入力文字列のi番目以降における
100*(o の数)/ (xの数+oの数)
で求められます。

最初にo,xの数をそれぞれ数えてから、上記の式をそのまま実装します。
今回は出力が小数点6位ほどまで出力しないといけないので、数えるのに使う変数は最初からdoubleで宣言しておけばキャストなどが必要なくなります。

実際に出力するfor文では、i番目の文字によってok,badを減らしていけば良いです。

#include <iostream>
#include <vector>
#include <string>

#define rep(i,j,k) for(int i=(int)j;i<(int)k;i++)

using namespace std;

int main(){
    string s;
    cin>>s;
    double ok=0,bad=0;
    rep(i,0,s.length()){
        if(s[i]=='o')ok++;
        else bad++;
    }
    
    rep(i,0,s.length()){
        printf("%.10f\n",100*(ok/(ok+bad)));
        if(s[i]=='o')ok--;
        else bad--;
    }
    

    
    return 0;
}