#include <iostream>
#include <cstdint>
#include <random>
#include <tuple>
std::uint64_t MakeNunber(std::uint64_t Radix=10,unsigned int S=0) {
std::minstd_rand mr(S);
std::uniform_int_distribution<std::uint64_t> UI(Radix, Radix * Radix - 1);
return UI(mr);
}
std::tuple<std::uint64_t,std::uint64_t> MakeHoge(std::uint64_t N, std::uint64_t Radix) {
std::uint64_t C = 0;
do {
std::uint64_t A = N % Radix;
std::uint64_t B = N / Radix;
N = A * B;
C++;
} while (N >= Radix);
return { N,C };
}
int main() {
std::uint64_t Radix = 10;
std::size_t L = 10;
for (std::size_t i = Radix; i < Radix*Radix; i++) {
//std::uint64_t N = MakeNunber(Radix,i);
std::uint64_t N = i;
std::uint64_t V = N;
std::uint64_t C = 0;
std::tie(N, C) = MakeHoge(N, Radix);
std::cout <<"V="<< V<<" N=" << N << " C=" << C << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHJhbmRvbT4KI2luY2x1ZGUgPHR1cGxlPgoKc3RkOjp1aW50NjRfdCBNYWtlTnVuYmVyKHN0ZDo6dWludDY0X3QgUmFkaXg9MTAsdW5zaWduZWQgaW50IFM9MCkgewoJc3RkOjptaW5zdGRfcmFuZCBtcihTKTsKCglzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxzdGQ6OnVpbnQ2NF90PiBVSShSYWRpeCwgUmFkaXggKiBSYWRpeCAtIDEpOwoKCXJldHVybiBVSShtcik7Cn0KCnN0ZDo6dHVwbGU8c3RkOjp1aW50NjRfdCxzdGQ6OnVpbnQ2NF90PiBNYWtlSG9nZShzdGQ6OnVpbnQ2NF90IE4sIHN0ZDo6dWludDY0X3QgUmFkaXgpIHsKCXN0ZDo6dWludDY0X3QgQyA9IDA7CglkbyB7CgoJCXN0ZDo6dWludDY0X3QgQSA9IE4gJSBSYWRpeDsKCQlzdGQ6OnVpbnQ2NF90IEIgPSBOIC8gUmFkaXg7CgkJTiA9IEEgKiBCOwoJCUMrKzsKCX0gd2hpbGUgKE4gPj0gUmFkaXgpOwoKCXJldHVybiB7IE4sQyB9Owp9CgppbnQgbWFpbigpIHsKCXN0ZDo6dWludDY0X3QgUmFkaXggPSAxMDsKCQoJc3RkOjpzaXplX3QgTCA9IDEwOwoKCWZvciAoc3RkOjpzaXplX3QgaSA9IFJhZGl4OyBpIDwgUmFkaXgqUmFkaXg7IGkrKykgewoJCS8vc3RkOjp1aW50NjRfdCBOID0gTWFrZU51bmJlcihSYWRpeCxpKTsKCQlzdGQ6OnVpbnQ2NF90IE4gPSBpOwoJCXN0ZDo6dWludDY0X3QgViA9IE47CgkJc3RkOjp1aW50NjRfdCBDID0gMDsKCgkJc3RkOjp0aWUoTiwgQykgPSBNYWtlSG9nZShOLCBSYWRpeCk7CgkJc3RkOjpjb3V0IDw8IlY9Ijw8IFY8PCIgTj0iIDw8IE4gPDwgIiBDPSIgPDwgQyA8PCBzdGQ6OmVuZGw7Cgl9Cn0=