Помощ за две задачи от предишни изпити
Не мога да довърша две задачи от предишни изпити, ако може малко помощ:
1.Първата е от последния изпит. Не мога да загръгля BigIntiger
Това е кода
import java.math.BigDecimal; import java.util.Arrays; import java.util.Scanner; public class dasdasa { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num1 = Integer.parseInt(scanner.nextLine()); int num2 = Integer.parseInt(scanner.nextLine()); String [] name = new String[num1]; int [] visits = new int[num1]; double [] price = new double[num1]; BigDecimal [] multiply = new BigDecimal[num1]; BigDecimal total = new BigDecimal("0.0"); for (int i = 0; i <num1 ; i++) { name[i]=scanner.next(); visits[i]=Integer.parseInt(scanner.next()); price[i]=Double.parseDouble(scanner.next()); multiply[i]=BigDecimal.valueOf(visits[i]*price[i]); } for (int i = 0; i < num1; i++) { total = total.add(multiply[i]); } for(String start: name){ System.out.println(start); } double securityToken = Math.pow(num2,num1); System.out.printf("Total Loss: %.20f%n",total); System.out.printf("Security Token: %.0f",securityToken); } }
2. Втората е тази https://judge.softuni.bg/Contests/Practice/DownloadResource/1844
Тук на грешките джъдж не ми дава инпът и ми е трудно да разбера къде греша. Това е кода:
import java.math.BigDecimal; import java.util.Scanner; public class Testt { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] time = scanner.nextLine().split("[:]"); int steps = Integer.parseInt(scanner.nextLine()); int second = Integer.parseInt(scanner.nextLine()); int total =steps*second; int hours = (total / 3600)+Integer.parseInt(time[0]); int minutes = ((total % 3600) / 60)+Integer.parseInt(time[1]); int seconds = (total % 60)+Integer.parseInt(time[2]); if(seconds==60){ minutes++; seconds=00; } if(minutes==60){ hours++; minutes=00; } if(seconds>60){ seconds=seconds%60; minutes++; } if(minutes>60){ hours+=minutes%60; hours++; } if(hours>=24){ hours=hours-24; } System.out.printf("Time Arrival: %02d:%02d:%02d", hours, minutes, seconds); } }
Съдейки по изходите ми изглежда, че трябва да изчисляваш каква точност след десетичната запетая ти трябва и да построяваш патърна динамично според нужната точност.
Ами не ми изглежда динамично. В C# се слага един decimal и джъдж дава 100/100.
В Java не знам защо не се получава. Ето това ми е пълния код
В constraints пише - The total years should have the same accuracy as the total width. Т.е. всеки път ще имаш различна точност след десетичната запетая, в зависимост от входа, следователно патърна е динамичен. Ето решение - https://pastebin.com/H6KTutWc. Само че един тест пак ще ти гърми и като прочетеш отново constraints - The total width of the body of the phoenix will have up to 20 digits after the decimal point. Double няма достатъчно точност и ти трябва BigDecimal, а с него няма да има нужда да се занимаваш с патърните - https://pastebin.com/sMu5AD4G.