Loading...
Bubeto1979 avatar Bubeto1979 12 Точки

Задача 6. Number Generator (Java)

Някой може ли да ме светне къде точно ми се чупи задачата? Благодаря предварително.

 

import java.util.Scanner;


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

        int m = Integer.parseInt(scanner.nextLine());
        int n = Integer.parseInt(scanner.nextLine());
        int l = Integer.parseInt(scanner.nextLine());
        int sum = 100*m + 10*n + l;
        int specNumber = Integer.parseInt(scanner.nextLine());
        int controlNumber = Integer.parseInt(scanner.nextLine());
        boolean isReached = false;



        for (int i = sum; i >= 111; i--) {

            if (i % 3 == 0){
                specNumber += 5;
            }
            else if(i % 10 == 5){
                specNumber -= 2;
            }
            else if(i % 2 == 0){
                specNumber *= 2;
            }
            if (specNumber >= controlNumber){
                isReached = true;
                break;
            }
        }

        if (isReached){
            System.out.printf("Yes! Control number was reached! Current special number is %d.", specNumber);


        }
        else {
            System.out.printf("No! %d is the last reached special number.", specNumber);
        }       

    }
}
Тагове:
0
Programming Basics
tdk928 avatar tdk928 108 Точки

Ами виж първият 0-лев тест.Идеята на задачата е да се реши с 3 цикъла.При твоя вариант ако числото е 973 ти го получаваш и първите ти 3 завъртания ще са ок.Само ,че после по твоята логика следа 973-972-971-970... а логиката на задата е след 971 да следва 963.Тоест 2-рото число е намаляло съответно после ще стане 953.... а при теб са последователни ето моето решение:
https://pastebin.com/k26HVYMV

1
Bubeto1979 avatar Bubeto1979 12 Точки

Благодаря за помощта. Не разбирам защо да не мине през 973-972-971-970...т.е защо трябва да е с три цикъла, а не с един? 

0
tdk928 avatar tdk928 108 Точки

Защото при твоя вариант ги сваля последователно 71-70-69 и т.н а тук се прескачат числа както виждаш от примера който е даден в случея намаля 2-рото число и ако не си достигнал контролното число после ще започне и 1-вото да се сваля от типа на 873 872....... и накрая 773 772 771.... и т.н .С други думи при 973 имаш 3 итерации за ,после пак 3 за следващото след 7(в случея преди 7 защото е обратен цикъл) 9(6)3,2,1, -> 9(5)3,2,1 -> 9(4)3,2,1 а при твоя вариант са последователни тук са през 10 нали виждаш 963 , 953 и надолу.Трябват ти 3 цикъла защото последния е броя завъртания а 1-вият и 2-рият е кой числа реално се завъртат + последните итерации.Ако числото беше 955 щеше да имаш по 5 завъртания на всяко(2ро число) 9(5)5,4,3,2,1 -> 9(4)5,4,3,2,1 и т.н докато при твоята формула щяха да са последователни 955,954,953,952,951,950,949 и нямаше да е вярно.

0
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

В тази задача уловката е, че числата са в границата от 1..9 следователно нито една от цифрите не трябва да достига стойност 0. Числа като 970, 907 и т.н са невалидни. Ако я решаваш с 3 цикъла и правилни граници няма да ги хитнеш, но ако го правиш с един трябва малко повече работа за да ограничиш тези стойности. 

0
Bubeto1979 avatar Bubeto1979 12 Точки

Е сега вече ми стана ясно, благодаря! 

0
MagiUzunova avatar MagiUzunova 0 Точки

Да. Аз лично я направих с три вложени for-a и ми стана интересно дали няма да стане с един.

Разписах го и с един,но се правят проверки за различно от нула за всяка една позиция на трицифреното число докато върти цикъла и проверки за това стотицата да е по-малка от първото въведено число, десетицата да е по-малка от второто въведено число и единиците да са по-малки от третото въведено число.  така се изклюват излишните числа.

 

0
st.penchev avatar st.penchev 3 Точки

Лично според мен условието е непълно. Трябва да се досещаш някои неща.

0
spzvtbg avatar spzvtbg 581 Точки

в условието пише че ако дадената комбинация отговаря на повече от едно условие се изпълнява само първото и цикъла продължава да върти напред

 

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