Софтуерно Инженерство
Loading...
+ Нов въпрос
Ingenera avatar Ingenera 19 Точки

90/100 AnonimousDownsite от архива с изпитни задачи

Условие на задачата : https://judge.softuni.bg/Contests/Practice/Index/834#0

Моят код на задачата : https://pastebin.com/zH72W0Ta

Джъдж дава малко :)  - само 90/100, а аз си изчерпах идеите . Ако някой има интерес да погледне и да сподели идеи - би било чудесно!

Въпросът е от чисто спортна злоба :), а пък и проблемите трябва да се решават - нали?

0
Java Fundamentals
mark79 avatar mark79 259 Точки
Best Answer

Здравей,

проблем в случая е големината на числото, което може да се получи при повдигането на степен. Използвай BigInteger или BigDecimal и съотвения метод.

public class AnonymousDownsite {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int numSites = Integer.parseInt(scan.nextLine());
        BigInteger secKey = BigInteger.valueOf(Integer.parseInt(scan.nextLine()));

        BigDecimal totalLost = new BigDecimal(0);
        for (int i = 0; i < numSites; i++) {
            String[] data = scan.nextLine().split("\\s");
            System.out.println(data[0]);
            BigDecimal visit = new BigDecimal(data[1]);
            BigDecimal singleVisitPrice = new BigDecimal(data[2]);
            totalLost = totalLost.add(visit.multiply(singleVisitPrice));
        }

        System.out.printf("Total Loss: %.20f%n", totalLost);
        System.out.printf("Security Token: %d", secKey.pow(numSites));
    }
}

Поздрави :)

0
17/07/2019 13:09:04
Ingenera avatar Ingenera 19 Точки

Абсолютно си прав , това е бил проблема, мина ми през ума но не вярвах че там са сложили капанчето laugh.

Благодаря!

1
silenzio avatar silenzio 17 Точки

Здрaвей,

Пробвай и при повдигането на степен да използваш BigDecimal.

0