fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. class Ideone
  8. {
  9. static final int[] POWERS_OF_10 = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 100000000};
  10. static int getValue(int index){
  11. if (index-- == 0) // remove this if-statement to start from 1
  12. return 0;
  13. int digits = 0;
  14. int positions = 0;
  15. while (positions <= index)
  16. {
  17. index -= positions;
  18. digits++;
  19. positions = 9 * digits * POWERS_OF_10[digits-1];
  20. }
  21. int number = index / digits + POWERS_OF_10[digits-1];
  22. int digit = index % digits;
  23. int value = Integer.toString(number).charAt(digit) - '0'; // lazy approach
  24. // int value = number / POWERS_OF_10[digits-digit-1] % 10; // non-lazy approach
  25. return value;
  26. }
  27.  
  28. public static void main (String[] args) throws java.lang.Exception
  29. {
  30. for (int i = 0; i < 20; i++)
  31. System.out.print(getValue(i) + ", ");
  32. }
  33. }
Success #stdin #stdout 0.05s 4386816KB
stdin
Standard input is empty
stdout
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4,