#include <iostream>
#include <vector>
#include <map>
#include <cstdint>
#include <cmath>
typedef std::vector<std::uint64_t> DType;
typedef std::map<std::uint64_t, std::uint64_t> CType;
DType SepDigit(std::uint64_t N,std::uint64_t Rx=10) {
DType R;
std::uint64_t T = 0;
while (N) {
T = N % Rx;
R.push_back(T);
N /= Rx;
}
return R;
}
DType MakeHoge(std::uint64_t Digit, std::uint64_t ND = 2) {
std::uint64_t F = std::pow(10, Digit - 1);
std::uint64_t L = std::pow(10, Digit);
DType D;
CType C;
DType R;
//std::uint64_t R = 0;
for (; F < L; F++) {
D = SepDigit(F);
for (auto& o : D) {
C[o]++;
if (C.size() > ND)break;
}
if (C.size() == ND)R.push_back(F);
C.clear();
}
return R;
}
bool Show(DType& D,std::uint64_t W,std::uint64_t Di) {
std::cout << "Width:" << W << std::endl;
std::cout << "Digit:" << Di << std::endl;
std::cout << "Find:" << D.size() << " count!" << std::endl;
for (auto& o : D) {
std::cout << o << std::endl;
}
return true;
}
int main() {
DType R;
std::uint64_t Digit = 2;
std::uint64_t Needwidth = 4;
R = MakeHoge(Needwidth, Digit);
Show(R,Needwidth,Digit);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPGNtYXRoPgoKdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6OnVpbnQ2NF90PiBEVHlwZTsKdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnVpbnQ2NF90LCBzdGQ6OnVpbnQ2NF90PiBDVHlwZTsKCkRUeXBlIFNlcERpZ2l0KHN0ZDo6dWludDY0X3QgTixzdGQ6OnVpbnQ2NF90IFJ4PTEwKSB7CglEVHlwZSBSOwoJc3RkOjp1aW50NjRfdCBUID0gMDsKCgl3aGlsZSAoTikgewoJCVQgPSBOICUgUng7CgkJUi5wdXNoX2JhY2soVCk7CgkJTiAvPSBSeDsKCX0KCglyZXR1cm4gUjsKfQoKRFR5cGUgTWFrZUhvZ2Uoc3RkOjp1aW50NjRfdCBEaWdpdCwgc3RkOjp1aW50NjRfdCBORCA9IDIpIHsKCglzdGQ6OnVpbnQ2NF90IEYgPSBzdGQ6OnBvdygxMCwgRGlnaXQgLSAxKTsKCXN0ZDo6dWludDY0X3QgTCA9IHN0ZDo6cG93KDEwLCBEaWdpdCk7CglEVHlwZSBEOwoJQ1R5cGUgQzsKCglEVHlwZSBSOwoKCS8vc3RkOjp1aW50NjRfdCBSID0gMDsKCWZvciAoOyBGIDwgTDsgRisrKSB7CgkJRCA9IFNlcERpZ2l0KEYpOwoJCWZvciAoYXV0byYgbyA6IEQpIHsKCQkJQ1tvXSsrOwoJCQlpZiAoQy5zaXplKCkgPiBORClicmVhazsKCQl9CgkJaWYgKEMuc2l6ZSgpID09IE5EKVIucHVzaF9iYWNrKEYpOwoJCUMuY2xlYXIoKTsKCX0KCgoJcmV0dXJuIFI7Cgp9Cgpib29sIFNob3coRFR5cGUmIEQsc3RkOjp1aW50NjRfdCBXLHN0ZDo6dWludDY0X3QgRGkpIHsKCXN0ZDo6Y291dCA8PCAiV2lkdGg6IiA8PCBXIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCAiRGlnaXQ6IiA8PCBEaSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIkZpbmQ6IiA8PCBELnNpemUoKSA8PCAiIGNvdW50ISIgPDwgc3RkOjplbmRsOwoJZm9yIChhdXRvJiBvIDogRCkgewoJCXN0ZDo6Y291dCA8PCBvIDw8IHN0ZDo6ZW5kbDsKCX0KCglyZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7CgoJRFR5cGUgUjsKCXN0ZDo6dWludDY0X3QgRGlnaXQgPSAyOwoJc3RkOjp1aW50NjRfdCBOZWVkd2lkdGggPSA0OwoJUiA9IE1ha2VIb2dlKE5lZWR3aWR0aCwgRGlnaXQpOwoJU2hvdyhSLE5lZWR3aWR0aCxEaWdpdCk7CgoJcmV0dXJuIDA7Cgp9