ブルーブリッジカップ_第3回_決勝戦_C言語高職グループ_4
1962 ワード
十博九敗と言われる.多くの賭博の背後に陰謀が隠されているからだ.しかし、必ずしもそうではありません.一部の賭博の背後には「陽謀」が隠されています.
テーブルの上に6つの箱を置いて、番号は1から6です.複数の参加者(以下、プレイヤー)は、任意の数のお金をある番号の箱に押さえることができる.すべてのプレイヤーが賭けた後、荘家は同時に3つのサイコロを投げた(サイコロの数字はすべて1~6).勝負のルールは以下の通りです.
1. あるサイコロの数字がプレイヤーが押した箱番号と同じであれば、プレイヤーは自分の賭けを取り戻し、荘家は彼が押した数で弁償する(すなわち1対1の賠償率).
2. 2つのサイコロの数字がプレイヤーが押した箱番号と同じであれば、プレイヤーは自分の賭けを取り戻し、荘家は彼が押した数の2倍の賠償(すなわち1対2の賠償率)を払う.
3. 3つのサイコロの数字がプレイヤーが押した箱番号と同じであれば、プレイヤーは自分の賭けを取り戻し、荘家は彼が押した数の6倍の賠償(すなわち1対6の賠償率)を払う.
4. プレイヤーが押した箱番号とあるサイコロの数の積が他の2つのサイコロの数の積に等しい場合、プレイヤーは自分の賭けを取り戻し、荘家も弁償しない(流局).
5. 以上のルールに同時に満足する者がいれば、プレイヤーは自分にとって最も有利なルールを選択することができる.ルールが実行されると、荘家はすべての箱の残りの賭けを収穫した.
一見、ルールがプレイヤーに有利なように見え、荘家は損をしている.しかし、大量の実戦を経て、局面が難しいことに気づき、荘家が手足を作ったのではないかと疑い、荘家は「プレイヤーがサイコロを提供することができ、プレイヤーがサイコロを投げることもできる」と率直に言った.
あなたの任務は、プログラミングを通じてこのプロセスをシミュレートすることです.シミュレーションは50万回で、1人のプレイヤーしかいないと仮定すると、彼の毎回の賭けは1元で、その賭けの箱番号はランダムです.荘家は賠償に十分な資金を持っていると仮定した.最後に荘家の収益率(荘家の利益金額/注ぎ込み総額)を算出した.
【入力・出力フォーマット要件】
プログラムは入力がなく、プログラムは出力荘家の収益率を実行し、四捨五入して小数後3位に保留する.
テーブルの上に6つの箱を置いて、番号は1から6です.複数の参加者(以下、プレイヤー)は、任意の数のお金をある番号の箱に押さえることができる.すべてのプレイヤーが賭けた後、荘家は同時に3つのサイコロを投げた(サイコロの数字はすべて1~6).勝負のルールは以下の通りです.
1. あるサイコロの数字がプレイヤーが押した箱番号と同じであれば、プレイヤーは自分の賭けを取り戻し、荘家は彼が押した数で弁償する(すなわち1対1の賠償率).
2. 2つのサイコロの数字がプレイヤーが押した箱番号と同じであれば、プレイヤーは自分の賭けを取り戻し、荘家は彼が押した数の2倍の賠償(すなわち1対2の賠償率)を払う.
3. 3つのサイコロの数字がプレイヤーが押した箱番号と同じであれば、プレイヤーは自分の賭けを取り戻し、荘家は彼が押した数の6倍の賠償(すなわち1対6の賠償率)を払う.
4. プレイヤーが押した箱番号とあるサイコロの数の積が他の2つのサイコロの数の積に等しい場合、プレイヤーは自分の賭けを取り戻し、荘家も弁償しない(流局).
5. 以上のルールに同時に満足する者がいれば、プレイヤーは自分にとって最も有利なルールを選択することができる.ルールが実行されると、荘家はすべての箱の残りの賭けを収穫した.
一見、ルールがプレイヤーに有利なように見え、荘家は損をしている.しかし、大量の実戦を経て、局面が難しいことに気づき、荘家が手足を作ったのではないかと疑い、荘家は「プレイヤーがサイコロを提供することができ、プレイヤーがサイコロを投げることもできる」と率直に言った.
あなたの任務は、プログラミングを通じてこのプロセスをシミュレートすることです.シミュレーションは50万回で、1人のプレイヤーしかいないと仮定すると、彼の毎回の賭けは1元で、その賭けの箱番号はランダムです.荘家は賠償に十分な資金を持っていると仮定した.最後に荘家の収益率(荘家の利益金額/注ぎ込み総額)を算出した.
【入力・出力フォーマット要件】
プログラムは入力がなく、プログラムは出力荘家の収益率を実行し、四捨五入して小数後3位に保留する.
#include
#include
#include
#include
using namespace std;
int main()
{
int z1,z2,z3,w1;
int maxp,times,win;
srand((unsigned)time(NULL));
times=0;
win=0;
while(times<500000)
{
maxp=-1;
z1=rand()%6;
z2=rand()%6;
z3=rand()%6;
w1=rand()%6;
if(z1==w1||z2==w1||z3==w1) maxp=maxp>1?maxp:1;
if((z1==w1&&z2==w1)||
(z1==w1&&z3==w1)||
(z2==w1&&z2==w1)) maxp=maxp>2?maxp:2;
if(z1==w1&&z2==w1&&z3==w1) maxp=maxp>6?maxp:6;
if((w1*z1==z2*z3)||
(w1*z2==z1*z3)||
(w1*z3==z1*z2)) maxp=maxp>0?maxp:0;
win+=maxp;
times++;
}
printf("%.3lf
",(double)(times-win)/times);
return 0;
}