Loading...
Vasetoo0 avatar Vasetoo0 5 Точки

Малко Помощ за Задача: Spice Must Flow - Technology Fundamentals Java

Здравейте колеги, имам малко затруднения с тази задача, какво ли не пробвах , но явно не мога да го измисля, ако може някой да съдейства с малко обяснение:

Това е задачата:

Spice is Love, Spice is Life. And most importantly, Spice must flow. It must be extracted from the scorching sands of Arrakis, under constant threat of giant sand worms. To make the work as efficient as possible, the Duke has tasked you with the creation of a management software.

Write a program that calculates the total amount of spice that can be extracted from a source. The source has a starting yield, which indicates how much spice can be mined on the first day. After it has been mined for a day, the yield drops by 10, meaning on the second day it’ll produce 10 less spice than on the first, on the third day 10 less than on the second, and so on (see examples). A source is considered profitable only while its yield is at least 100 – when less than 100 spice is expected in a day, abandon the source.

The mining crew consumes 26 spice every day at the end of their shift and an additional 26 after the mine has been exhausted. Note that the workers cannot consume more spice than there is in storage.

When the operation is complete, print on the console on two separate lines how many days the mine has operated and the total amount of spice extracted.

Input

You will receive a number, representing the starting yield of the source.

Output

Print on the console on two separate lines how many days the mine has operated and the total amount of spice extracted.

 Constraints

  • The starting yield will be a positive integer within range [0 … 2 147 483 647]

Examples

Input

Output

Explanation

111

2

134

Day 1 we extract 111 spice and at the end of the shift, the workers consume 26, leaving 85. The yield drops by 10 to 101.

Day 2 we extract 101 spice, the workers consume 26, leaving 75. The total is 160 and the yield has dropped to 91.

Since the expected yield is less than 100, we abandon the source. The workers take another 26, leaving 134. The mine has operated 2 days.

А това е моето решение: https://pastebin.com/dRqZ1Uw3

Ето и линк към JUdge: https://judge.softuni.bg/Contests/Compete/Index/1228#8

Дава ми 85/100.

Тагове:
0
Fundamentals Module 05/02/2019 12:16:32
arjunah avatar arjunah 9 Точки

Ето така кодът ти работи:

public class exercise {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        int dayYield = Integer.parseInt(reader.readLine());

        int spiceMined = 0;
        int daysOperated = 0;

        while (dayYield >= 100) {
            spiceMined += dayYield - 26;
            dayYield -= 10;
            daysOperated++;
        }
        if (spiceMined != 0) {
            spiceMined -= 26;
        }
        System.out.println(daysOperated);
        System.out.println(spiceMined);
    }
}

Нямаш нужда от тези проверки, които си направил, понеже ако входът >= 100, spiceMined никога няма да е по-малко от 26. А ако входът ти е <100, тогава изписва "0 0" на конзолата, понеже въобще не влиза в цикъла.
 

Дано да ти е било полезно!

EDIT: Малко по-подоробно, че нямах много време преди малко: при вход >=100, в граничния случай (dayYield = 100), след 1 ден операция ще имаш spiceMined = 100 - 26 = 74, което значи, че при всички положения ще можеш да извадиш консумираното количество след затваряне на мината (26) от spiceMined и проверкa за spiceMined < 26 не ти е нужна. 

А тук:

if (spiceMined == 0) {
        dayYield -= 26;
        if (dayYield < 0) {
        dayYield = 0;
        }

според мен си объркал променливите: няма смисъл от dayYield -= 26 (spiceMined трябва да се намалява с 26) и след това проверка за dayYield < 0 при условието  spiceMined == 0; в контекста на задачата тази проверка не прави нищо, свързано с изхода, понеже dayYield не се отпечатва на конзолата.

Нужна ти е само една проверка след цикъла за spiceMined != 0, за да извадиш допълнителните 26, ако мината е оперирала поне 1 ден.

0
05/02/2019 13:48:29
Vasetoo0 avatar Vasetoo0 5 Точки

Сега разбрах къде ми е грешката, благодаря колеги!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.