#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
int color_of_card(int i)
{
return i / 13;
}
int value_of_card(int i)
{
return i % 13;
}
std::string card_as_string(int i)
{
static const std::string facevalues[] = {
"Two", "Three", "Four", "Five", "Six", "Seven",
"Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"
};
static const std::string suits[] = { "Diamonds", "Hearts", "Spades", "Clubs" };
return facevalues[value_of_card(i)] + " of " + suits[color_of_card(i)];
}
int getcard() {
return rand() % 52;
}
int main() {
const int times = 1000;
int counter = 0;
for (int y = 0; y != times; y++) {
const auto card1 = getcard();
auto card2 = getcard();
while (card1 == card2) { card2 = getcard(); } // Ensure cards differ.
if (value_of_card(card1) == value_of_card(card2)) {
++counter;
}
}
std::cout << counter << std::endl; // 58 or 59 normally
// Once you took a card, there are only 3 card on same value
// and there is 51 remaining cards.
std::cout << 3 / 51.f << std::endl; // 0.0588235
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4gCiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxzdHJpbmc+CgppbnQgY29sb3Jfb2ZfY2FyZChpbnQgaSkKewogICAgcmV0dXJuIGkgLyAxMzsKfQoKaW50IHZhbHVlX29mX2NhcmQoaW50IGkpCnsKICAgIHJldHVybiBpICUgMTM7Cn0KCnN0ZDo6c3RyaW5nIGNhcmRfYXNfc3RyaW5nKGludCBpKQp7CiAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgZmFjZXZhbHVlc1tdID0gewogICAgICAgICJUd28iLCAiVGhyZWUiLCAiRm91ciIsICJGaXZlIiwgIlNpeCIsICJTZXZlbiIsCiAgICAgICAgIkVpZ2h0IiwgIk5pbmUiLCAiVGVuIiwgIkphY2siLCAiUXVlZW4iLCAiS2luZyIsICJBY2UiCiAgICB9OwogICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIHN1aXRzW10gPSB7ICJEaWFtb25kcyIsICJIZWFydHMiLCAiU3BhZGVzIiwgIkNsdWJzIiB9OwoKICAgIHJldHVybiBmYWNldmFsdWVzW3ZhbHVlX29mX2NhcmQoaSldICsgIiBvZiAiICsgc3VpdHNbY29sb3Jfb2ZfY2FyZChpKV07Cn0KCmludCBnZXRjYXJkKCkgewogICAgcmV0dXJuIHJhbmQoKSAlIDUyOwp9CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IGludCB0aW1lcyA9IDEwMDA7CgogICAgaW50IGNvdW50ZXIgPSAwOwogICAgZm9yIChpbnQgeSA9IDA7IHkgIT0gdGltZXM7IHkrKykgewogICAgICAgIGNvbnN0IGF1dG8gY2FyZDEgPSBnZXRjYXJkKCk7CiAgICAgICAgYXV0byBjYXJkMiA9IGdldGNhcmQoKTsKICAgICAgICB3aGlsZSAoY2FyZDEgPT0gY2FyZDIpIHsgY2FyZDIgPSBnZXRjYXJkKCk7IH0gLy8gRW5zdXJlIGNhcmRzIGRpZmZlci4KCiAgICAgICAgaWYgKHZhbHVlX29mX2NhcmQoY2FyZDEpID09IHZhbHVlX29mX2NhcmQoY2FyZDIpKSB7CiAgICAgICAgICAgICsrY291bnRlcjsKICAgICAgICB9CiAgICB9CiAgICBzdGQ6OmNvdXQgPDwgY291bnRlciA8PCBzdGQ6OmVuZGw7ICAvLyA1OCBvciA1OSBub3JtYWxseQogICAgLy8gT25jZSB5b3UgdG9vayBhIGNhcmQsIHRoZXJlIGFyZSBvbmx5IDMgY2FyZCBvbiBzYW1lIHZhbHVlCiAgICAvLyBhbmQgdGhlcmUgaXMgNTEgcmVtYWluaW5nIGNhcmRzLgogICAgc3RkOjpjb3V0IDw8IDMgLyA1MS5mIDw8IHN0ZDo6ZW5kbDsgLy8gMC4wNTg4MjM1Cn0K