Помогите плз) Надобно написать программку на любом ПаскалеПрограммист на Северном полюсе
Помогите плз) Надобно написать программу на любом Паскале
Программер на Северном полюсе работал за компом в варежках и потому мог набирать только 0 и 1, а кнопка 0 запала. Сможет ли он набрать число, состоящее только из единиц и при этом кратное данному N?
Входные данные
Программе дано число N (1 N 10^6).
Выходные данные
Вывести малое число, удволетворяющее требованию, или "NO" , если такового числа не существует.
Если что, это 1453 задачка на Информатиксе
//PascalABC.NET
//В задачке есть ограничение по медли в 1 секунду
//потому была применена функция milliseconds
//которая отдаёт кол-во миллисекунд с момента
//начала работы программки
var
N, cur, count: uint64;
begin
read(N);
cur := 1;
count := 0;
while (cur lt;gt; 0) and (milliseconds() / 1000 lt; 0.78) do
begin
cur := (cur * 10 + 1) mod N;
count := count + 1;
end;
if (cur = 0) then write('1' * (count = 1 ? count : count + 1))
else write('NO');
end.
Ответ:
Код дан в приложении.
Объяснение:
Поддерживать само число на паскале будет достаточно трудно без использования biginteger. Будем поддерживать k - количество единиц в нашем числе, и ans - остаток от деления нашего числа на N. Если он в какой-то момент вышел равен нулю, это значит, что мы отыскали число. В нем k единиц. Мы будем продолжать поиски 3 * 10 раз. Если так ничего и не отыскали - выводим NO.
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.
Разные вопросы.