#include <iostream>
#include <random>
#include <cstdint>
#include <tuple>
#include <algorithm>
//計算機以外での実行を禁ずる。
std::size_t DoOne(std::size_t N, std::size_t C) {
std::size_t V = 0;
std::size_t Re = N;
std::size_t T = 0;
std::random_device rd;
std::mt19937 mt(rd());
//std::mt19937 mt;
std::uniform_int_distribution<std::size_t> UI(1, 10);
do {
N = Re;
Re = 0;
T = 0;
for (std::size_t i = 0; i < N; i++) {
T = std::max(T,UI(mt));
if (T >= C) { Re++; }
}
V += T;
}while(Re != 0);
return V;
}
int main() {
std::uintmax_t V = 0;
std::size_t DiceCount = 10;
std::size_t NumberLimit = 5;
std::size_t L = 900000;
for (std::size_t i = 0; i < L; i++) {
V += DoOne(DiceCount, NumberLimit);
}
std::cout << "Do " << L << " count." << "Average:" << V / (double)L << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKLy/oqIjnrpfmqZ/ku6XlpJbjgafjga7lrp/ooYzjgpLnpoHjgZrjgovjgIIKc3RkOjpzaXplX3QgRG9PbmUoc3RkOjpzaXplX3QgTiwgc3RkOjpzaXplX3QgQykgewoJc3RkOjpzaXplX3QgViA9IDA7CglzdGQ6OnNpemVfdCBSZSA9IE47CglzdGQ6OnNpemVfdCBUID0gMDsKCglzdGQ6OnJhbmRvbV9kZXZpY2UgcmQ7CglzdGQ6Om10MTk5MzcgbXQocmQoKSk7CgkvL3N0ZDo6bXQxOTkzNyBtdDsKCXN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHN0ZDo6c2l6ZV90PiBVSSgxLCAxMCk7CglkbyB7CgkJTiA9IFJlOwoJCVJlID0gMDsKCQlUID0gMDsKCQlmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgTjsgaSsrKSB7CgkJCVQgPSBzdGQ6Om1heChULFVJKG10KSk7CgoJCQlpZiAoVCA+PSBDKSB7IFJlKys7IH0KCgkJfQoJCVYgKz0gVDsKCX13aGlsZShSZSAhPSAwKTsKCglyZXR1cm4gVjsKfQoKaW50IG1haW4oKSB7CglzdGQ6OnVpbnRtYXhfdCBWID0gMDsKCglzdGQ6OnNpemVfdCBEaWNlQ291bnQgPSAxMDsKCXN0ZDo6c2l6ZV90IE51bWJlckxpbWl0ID0gNTsKCXN0ZDo6c2l6ZV90IEwgPSA5MDAwMDA7Cglmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgTDsgaSsrKSB7CgkJViArPSBEb09uZShEaWNlQ291bnQsIE51bWJlckxpbWl0KTsKCX0KCglzdGQ6OmNvdXQgPDwgIkRvICIgPDwgTCA8PCAiIGNvdW50LiIgPDwgIkF2ZXJhZ2U6IiA8PCBWIC8gKGRvdWJsZSlMIDw8IHN0ZDo6ZW5kbDsKCglyZXR1cm4gMDsKfQo=