/* original code written by CyberPunk666 @ipon */
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
const int N = 1000000;
int main()
{
bool doors[3];
int count_switch = 0;
int count_switch_WIN = 0;
int count_NOswitch = 0;
int count_NOswitch_WIN = 0;
srand(time(0));
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < 3; doors[j++] = false);
doors[rand() % 3] = true;
int myDoor = rand() % 3;
int firstOpen;
do
{
firstOpen = rand() % 3;
} while (firstOpen == myDoor /*|| doors[firstOpen] == true*/);
/*mod starts*/
if (doors[firstOpen] == true) continue;
/*mod ends*/
int switchDoor = rand() % 2;
if (switchDoor == 1)
{
for (int j = 0; j < 3; ++j)
{
if (j != myDoor && j != firstOpen)
{
myDoor = j;
break;
}
}
}
if (switchDoor == 1)
{
++count_switch;
if (doors[myDoor] == true) ++count_switch_WIN;
}
if (switchDoor == 0)
{
++count_NOswitch;
if (doors[myDoor] == true) ++count_NOswitch_WIN;
}
}
double winrate = (double)count_switch_WIN / count_switch * 100;
double winrateNO = (double)count_NOswitch_WIN / count_NOswitch * 100;
printf("Switch_WINRATE: %f% (%d game)\nNOSwitch_WINRATE: %f% (%d game)\n", winrate, count_switch, winrateNO, count_NOswitch);
return 0;
}
Lyogb3JpZ2luYWwgY29kZSB3cml0dGVuIGJ5IEN5YmVyUHVuazY2NiBAaXBvbiAqLwoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KCiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8Y3RpbWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAxMDAwMDAwOwoKCmludCBtYWluKCkKewoJYm9vbCBkb29yc1szXTsKCglpbnQgY291bnRfc3dpdGNoID0gMDsKCWludCBjb3VudF9zd2l0Y2hfV0lOID0gMDsKCglpbnQgY291bnRfTk9zd2l0Y2ggPSAwOwoJaW50IGNvdW50X05Pc3dpdGNoX1dJTiA9IDA7CgoJc3JhbmQodGltZSgwKSk7CgoKCWZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKQoJewoJCWZvciAoaW50IGogPSAwOyBqIDwgMzsgZG9vcnNbaisrXSA9IGZhbHNlKTsKCQlkb29yc1tyYW5kKCkgJSAzXSA9IHRydWU7CgoJCWludCBteURvb3IgPSByYW5kKCkgJSAzOwoKCQlpbnQgZmlyc3RPcGVuOwoJCWRvCgkJewoJCQlmaXJzdE9wZW4gPSByYW5kKCkgJSAzOwoJCX0gd2hpbGUgKGZpcnN0T3BlbiA9PSBteURvb3IgLyp8fCBkb29yc1tmaXJzdE9wZW5dID09IHRydWUqLyk7CgogICAgICAgIC8qbW9kIHN0YXJ0cyovCiAgICAgICAgaWYgKGRvb3JzW2ZpcnN0T3Blbl0gPT0gdHJ1ZSkgY29udGludWU7CiAgICAgICAgLyptb2QgZW5kcyovCgoJCWludCBzd2l0Y2hEb29yID0gcmFuZCgpICUgMjsKCgkJaWYgKHN3aXRjaERvb3IgPT0gMSkKCQl7CgkJCWZvciAoaW50IGogPSAwOyBqIDwgMzsgKytqKQoJCQl7CgkJCQlpZiAoaiAhPSBteURvb3IgJiYgaiAhPSBmaXJzdE9wZW4pCgkJCQl7CgkJCQkJbXlEb29yID0gajsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKHN3aXRjaERvb3IgPT0gMSkKCQl7CgkJCSsrY291bnRfc3dpdGNoOwoJCQlpZiAoZG9vcnNbbXlEb29yXSA9PSB0cnVlKSArK2NvdW50X3N3aXRjaF9XSU47CgkJfQoJCWlmIChzd2l0Y2hEb29yID09IDApCgkJewoJCQkrK2NvdW50X05Pc3dpdGNoOwoJCQlpZiAoZG9vcnNbbXlEb29yXSA9PSB0cnVlKSArK2NvdW50X05Pc3dpdGNoX1dJTjsKCQl9Cgl9CgoJZG91YmxlIHdpbnJhdGUgPSAoZG91YmxlKWNvdW50X3N3aXRjaF9XSU4gLyBjb3VudF9zd2l0Y2ggKiAxMDA7Cglkb3VibGUgd2lucmF0ZU5PID0gKGRvdWJsZSljb3VudF9OT3N3aXRjaF9XSU4gLyBjb3VudF9OT3N3aXRjaCAqIDEwMDsKCglwcmludGYoIlN3aXRjaF9XSU5SQVRFOiAgICVmJSAoJWQgZ2FtZSlcbk5PU3dpdGNoX1dJTlJBVEU6ICVmJSAoJWQgZ2FtZSlcbiIsIHdpbnJhdGUsIGNvdW50X3N3aXRjaCwgd2lucmF0ZU5PLCBjb3VudF9OT3N3aXRjaCk7CgoKCXJldHVybiAwOwp9Cg==