7-177過去世のアーカイブ(20ポイント)
qs.jpg
この種の面白い占いアプレットは、オンラインの世界でよく見られます。実装の原則は非常に単純です。いくつかの質問を設計し、各質問に対するプレーヤーの回答に応じて、判断ツリーでパスを選択するだけです(図を参照)。結論は、パスの終わりに対応するノードです。
path.jpg
ここで、結論に1から始めて左から右に順番に番号を付けます。答えは単純な「はい」または「いいえ」であり、答え「はい」は左へのパスに対応し、答え「いいえ」は右へのパスに対応すると想定されます。プレイヤーからの一連の回答を踏まえて、彼が得た結論の番号を返してください。
入力形式:
最初の行を入力し、2つの正の整数を入力します。N(≤30)はプレーヤーがテストで回答する必要のある質問の数、M(≤100)はプレーヤーの数です。
M行に続いて、各行はプレーヤーからN個の回答を順番に提供します。ここで、yは「はい」に使用され、nは「いいえ」に使用されます。
出力形式:
各プレイヤーについて、対応する結論の番号を1行で出力します。
入力サンプル:
3~4
yny
NYY
NYN
yyn
出力サンプル:
3
5
6
2
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
while(m--){
string s;
int ans=1;
cin>>s;
for(int i=0;i<n;i++){
if(s[i]=='n')ans+=pow(2,n-i-1);
}cout<<ans<<endl;
}
}