fork download
  1. class Ideone
  2. {
  3. public static void main(String[] args)
  4. {
  5. // long t = 6;
  6. // for (int n = 1;; n++)
  7. // {
  8. // long l = (long) Math.ceil(Math.log10(n) * n);
  9. // if (t < l) t = t * 10 + 6;
  10. // if (t == l) System.out.println(n + "=>" + l);
  11. // if (l > 6666666666L) break;
  12. // }
  13.  
  14. long n = 0;
  15. long add = 1;
  16. long digits = 0;
  17. long damian = 6;
  18.  
  19. for (int i = 1; i <= 10; i++)
  20. {
  21. do
  22. {
  23. n += add;
  24. digits = (long) Math.ceil(Math.log10(n) * n);
  25. } while(digits < damian);
  26.  
  27. if (digits > damian)
  28. {
  29. n = binarySearch(n - add + 1, n - 1, damian);
  30. digits = nn(n);
  31. }
  32.  
  33. if (digits == damian)
  34. {
  35. System.out.printf("%d => %d桁%n", n, digits);
  36. } else
  37. {
  38. System.out.printf("%d => %d桁, %d >= %d桁%n", n - 1, nn(n - 1), n, digits);
  39. }
  40.  
  41. add = n;
  42. damian = damian * 10 + 6;
  43. }
  44. }
  45.  
  46. static long binarySearch(long min, long max, long t)
  47. {
  48. if (min > max) return min;
  49. long n = (min + max) >> 1;
  50. long digits = nn(n);
  51. return digits == t ? n : digits < t ? binarySearch(n + 1, max, t) : binarySearch(min, n - 1, t);
  52. }
  53.  
  54. static long nn(long n)
  55. {
  56. return (long) Math.ceil(Math.log10(n) * n);
  57. }
  58. }
  59.  
Success #stdin #stdout 0.05s 4386816KB
stdin
Standard input is empty
stdout
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桁