Задача "Добри числа"

Здравейте,

може ли малко помощ с тази задача. Както и да го въртя все не ми излиза…

Код вариант 1.

Код вариант 2.

За тази задачка ли, иде реч?
https://judge.telerikacademy.com/problem/01prettynumbers

Не, тази е Добри числа.

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

Ами в задачата се търсят всички числа в даден диапазон, които се делят на всяка една от цифрите си като изключим 0.
В първият вариант на кода взимам двете числа, които са дадени за Input и правя Array. Всяко число от Array-а го разделям на цифрите му, махам 0-та (ако има такава) и с модул разделям числото на останалите цифри от него. Ако има остатък значи не е “добро”, ако остатъкът и при двете деления е 0 числото е “добро” и го добавям в Array с резултат, които принтирам накрая. Понеже се получаваха дубликати ги махам.
Наясно съм, че това няма да сработи с по-големите числа, но дори и с малките не излиза верен резултат при тест 42-142 или 1-10.

Във вторият вариант с 2 функции подобни на Editorial-а на Java пак не ми се получава…

Трябва да намериш , колко са числата , не кои конкретно са. Тук алгоритъмът гърми, дори словестният ;). Вместо да ги пазиш в масив, защо не пробваш да ги обработваш интайм/веднага и една променлива за брояч и бум. Как може да имаш дублиращи в поредицата примерно: 1 2 3 4 5 6 7 8 9 10 ??? или 42 43 44 … 78

Като се преброят числата в Array-а става ясно колко са, но не са верният брой. На вторият вариант го правя просто с counter, който се увеличава при всяко “добро” число и пак не са правилният брой. Ако може да споделиш правилно решение на JS може да си намеря грешката.

Може , да опитаме да преправим вариант 1 или пък 2?

Ами вариант 2, като че ли ще стане по-лесно и за големите числа.

Ще го обмисля и при успех ще ти споделя.

Като цяло имаш няколко грешки във вариант 2.

  • При деленето temp /= 10; получаваш дробни числа.
  • Ако цифрата е 0 не трябва да връщаш false, че не е добро число, а да прескочиш тази проверка.

Мога да ти пусна решение ако искаш.
Все пак, за да пробваш сам като насока, по-добре смени този while с един for, който върти по цифрите на сегашното число и прескачай ако е 0.

1 Like

Здравейте,

И аз срещам трудности с тази задача. Като пробвам с примерите от условието, всичко е ок, но в Judge още на първия тест гърми. Тъй като Judge не показва какви входни данни използва, ми е трудно да открия грешката.

Ще съм ви благодарен, ако ме насочите къде греша.

Линк: https://pastebin.com/zegxGUrF

Поздрави!

EDIT: Реших я! Аз приемах входните данни като отделни часла, а те били масив :stuck_out_tongue:

@mr.raykov Здравей, можеш ли да подскажеш, как точно четеш входа, защото и при мен не излиза, а пробвах много варианти.