class Ideone
{
public static void main
(String[] args
) {
// long t = 6;
// for (int n = 1;; n++)
// {
// long l = (long) Math.ceil(Math.log10(n) * n);
// if (t < l) t = t * 10 + 6;
// if (t == l) System.out.println(n + "=>" + l);
// if (l > 6666666666L) break;
// }
long n = 0;
long add = 1;
long digits = 0;
long damian = 6;
for (int i = 1; i <= 10; i++)
{
do
{
n += add;
digits
= (long) Math.
ceil(Math.
log10(n
) * n
); } while(digits < damian);
if (digits > damian)
{
n = binarySearch(n - add + 1, n - 1, damian);
digits = nn(n);
}
if (digits == damian)
{
System.
out.
printf("%d => %d桁%n", n, digits
); } else
{
System.
out.
printf("%d => %d桁, %d >= %d桁%n", n
- 1, nn
(n
- 1), n, digits
); }
add = n;
damian = damian * 10 + 6;
}
}
static long binarySearch(long min, long max, long t)
{
if (min > max) return min;
long n = (min + max) >> 1;
long digits = nn(n);
return digits == t ? n : digits < t ? binarySearch(n + 1, max, t) : binarySearch(min, n - 1, t);
}
static long nn(long n)
{
return (long) Math.
ceil(Math.
log10(n
) * n
); }
}
Y2xhc3MgSWRlb25lCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7Ci8vICAgICAgICBsb25nIHQgPSA2OwovLyAgICAgICAgZm9yIChpbnQgbiA9IDE7OyBuKyspCi8vICAgICAgICB7Ci8vICAgICAgICAgICAgbG9uZyBsID0gKGxvbmcpIE1hdGguY2VpbChNYXRoLmxvZzEwKG4pICogbik7Ci8vICAgICAgICAgICAgaWYgKHQgPCBsKSB0ID0gdCAqIDEwICsgNjsKLy8gICAgICAgICAgICBpZiAodCA9PSBsKSBTeXN0ZW0ub3V0LnByaW50bG4obiArICI9PiIgKyBsKTsKLy8gICAgICAgICAgICBpZiAobCA+IDY2NjY2NjY2NjZMKSBicmVhazsKLy8gICAgICAgIH0KCiAgICAgICAgbG9uZyBuID0gMDsKICAgICAgICBsb25nIGFkZCA9IDE7CiAgICAgICAgbG9uZyBkaWdpdHMgPSAwOwogICAgICAgIGxvbmcgZGFtaWFuID0gNjsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMTA7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG4gKz0gYWRkOwogICAgICAgICAgICAgICAgZGlnaXRzID0gKGxvbmcpIE1hdGguY2VpbChNYXRoLmxvZzEwKG4pICogbik7CiAgICAgICAgICAgIH0gd2hpbGUoZGlnaXRzIDwgZGFtaWFuKTsKCiAgICAgICAgICAgIGlmIChkaWdpdHMgPiBkYW1pYW4pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG4gPSBiaW5hcnlTZWFyY2gobiAtIGFkZCArIDEsIG4gLSAxLCBkYW1pYW4pOwogICAgICAgICAgICAgICAgZGlnaXRzID0gbm4obik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChkaWdpdHMgPT0gZGFtaWFuKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJWQgPT4gJWTmoYElbiIsIG4sIGRpZ2l0cyk7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJWQgPT4gJWTmoYEsICVkID49ICVk5qGBJW4iLCBuIC0gMSwgbm4obiAtIDEpLCBuLCBkaWdpdHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhZGQgPSBuOwogICAgICAgICAgICBkYW1pYW4gPSBkYW1pYW4gKiAxMCArIDY7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBsb25nIGJpbmFyeVNlYXJjaChsb25nIG1pbiwgbG9uZyBtYXgsIGxvbmcgdCkKICAgIHsKICAgICAgICBpZiAobWluID4gbWF4KSByZXR1cm4gbWluOwogICAgICAgIGxvbmcgbiA9IChtaW4gKyBtYXgpID4+IDE7CiAgICAgICAgbG9uZyBkaWdpdHMgPSBubihuKTsKICAgICAgICByZXR1cm4gZGlnaXRzID09IHQgPyBuIDogZGlnaXRzIDwgdCA/IGJpbmFyeVNlYXJjaChuICsgMSwgbWF4LCB0KSA6IGJpbmFyeVNlYXJjaChtaW4sIG4gLSAxLCB0KTsKICAgIH0KCiAgICBzdGF0aWMgbG9uZyBubihsb25nIG4pCiAgICB7CiAgICAgICAgcmV0dXJuIChsb25nKSBNYXRoLmNlaWwoTWF0aC5sb2cxMChuKSAqIG4pOwogICAgfQp9Cg==
7 => 6桁
40 => 65桁, 41 >= 67桁
273 => 666桁
2017 => 6666桁
15870 => 66664桁, 15871 >= 66668桁
130334 => 666666桁
1103263 => 6666665桁, 1103264 >= 6666671桁
9551029 => 66666662桁, 9551030 >= 66666669桁
84122887 => 666666660桁, 84122888 >= 666666668桁
751113971 => 6666666659桁, 751113972 >= 6666666669桁