Задачка с часами :)
Решила задачу на acmp №30, ответ на 2ой тест правильно выводит, но тесткейс в самом сайте не проходит. Ссылка на задачу здесь.
Что не так с моим кодом? Почему правильный ответ не принимается сайтом?
import java.util.*;
public class Eratosfen {
public static void mapChange(String time, HashMap<Character,Integer> map){
if(time.length() < 2)
time += "0";
for (int i = 0; i < time.length(); i++) {
char ch = time.charAt(i);
if(map.containsKey(ch))
map.put(ch, map.get(ch) + 1);
else map.put(ch, 1);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String f_line = sc.next();
String s_line = sc.next();
String[] chars = f_line.split(":");
int hour = Integer.parseInt(chars[0].trim());
int min = Integer.parseInt(chars[1].trim());
int sec = Integer.parseInt(chars[2].trim());
chars = s_line.split(":");
int _hour = Integer.parseInt(chars[0].trim()) + 1;
int _min = Integer.parseInt(chars[1].trim()) + 1;
int _sec = Integer.parseInt(chars[2].trim()) + 1;
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
char c=(char)(i + '0');
map.put(c,0);
}
for (int i = hour; i < _hour; i++) {
for (int j = min; j < _min; j++) {
for (int k = sec; k < _sec; k++) {
//System.out.println(i+":"+j+":"+k);
mapChange(String.valueOf(i),map);
mapChange(String.valueOf(j),map);
mapChange(String.valueOf(k),map);
}
}
}
for (Map.Entry<Character, Integer> entry : map.entrySet()){
System.out.println(entry.getValue());
}
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Эти три цикла for (int i = hour... не приведут к правильному результату, т.к, например, при переходе через границу часа новые минуты будут меньше старых
Если хочется решать перебором, то просто переведите время в секунды от начала суток (01:05:15 = 3600+60+15=3675), пройдите от начала интервала до конца, получая на каждом шаге текущие значения минут, часов и секунд через деление и остаток от деления