fork(5) download
  1. import java.util.Scanner;
  2.  
  3. class PieczatkiDzieci {
  4. public static void main(String[] args) {
  5. Scanner in = new Scanner(System.in);
  6.  
  7. long l = in.nextLong() + 1;//zwieksza liczbe o 1 zeby nie skonczyc programu na zadanej liczbie, tylko wiekszej
  8. String s = "" + l;
  9. char[] cTab = s.toCharArray();
  10. int k = in.nextInt(); //ile 5 ma byc w liczbie
  11. boolean found = false; //czy znaleziono odpowiednia ilosc '5'
  12. char c = '5';
  13. int counter = 1;
  14. int position;
  15.  
  16. do {
  17. found = countFives(cTab, k, c);
  18. position = cTab.length - counter;
  19. try {
  20. if (cTab[position] != c) { //jesli cyfra jest inna niz 5
  21. if (cTab[position] < c) {//jesli cyfra jest mniejsza niz 5 to po prostu ja zmieni na 5
  22. cTab[position] = c;
  23. } else if (cTab[position] == c) {
  24. counter++;
  25. continue;
  26. }else { //jesli cyfra jest wieksza niz 5
  27. cTab[position] = c;
  28. cTab = increaseByOne(cTab, position);
  29. }
  30. }
  31. }catch (ArrayIndexOutOfBoundsException e) { //jesli liczba jest za krotka zostatnie dodana kolejna 5
  32. if (!found) {
  33. cTab = addOne(cTab);
  34. if (found) break;
  35. else continue;
  36. }
  37. }
  38. counter++;
  39.  
  40. }while (!found);//while
  41.  
  42. }
  43.  
  44. private static char[] addOne(char[] cTab) {
  45. String s = new String(cTab);
  46. s = "1" + s;
  47. return s.toCharArray();
  48. }
  49.  
  50. private static char[] increaseByOne(char[] cTab, int position) {
  51. String stringNumber = new String(cTab);
  52. int amount = cTab.length - position; // oblicza ile piatek jest juz na koncu liczby
  53. long longNumber;
  54. try { //jesli sie wpisze same 5 to zostaja obciete i program nie moze podstawic pustego stringa jako liczby
  55. longNumber = Long.parseLong(stringNumber.substring(0, position)) + 1; //obcina liczbe przed '5' i dodaje jeden
  56. }catch (NumberFormatException e) {
  57. longNumber = 1;
  58. }
  59. stringNumber = "" + longNumber;
  60.  
  61. for(int i = 0; i < amount; i++) {
  62. stringNumber = stringNumber + "5";
  63. }
  64.  
  65. cTab = stringNumber.toCharArray();
  66. return cTab;
  67. }
  68.  
  69. private static boolean countFives(char[] cTab, int k, char c) {
  70. int counter = 0;
  71. for (char character : cTab) {
  72. if (character == c) counter++;
  73. }
  74.  
  75. if(counter >= k) {
  76. System.out.println(cTab);
  77. return true;
  78. }
  79. else return false;
  80. }
  81. }
Success #stdin #stdout 0.06s 4386816KB
stdin
595 2
stdout
655