Помогите плз) Надо написать программу на любом Паскале
Программист на Северном полюсе работал за компьютером в варежках и поэтому мог набирать только 0 и 1, а клавиша 0 запала. Сможет ли он набрать число, состоящее только из единиц и при этом кратное заданному N?
Входные данные
Программе дано число N (1 ≤ N ≤ 10^6).
Выходные данные
Вывести минимальное число, удволетворяющее требованию, или "NO" , если такого числа не существует.
Если что, это 1453 задачка на Информатиксе
Ответы
Ответ:
Код дан в приложении.
Объяснение:
Поддерживать само число на паскале будет довольно сложно без использования biginteger. Будем поддерживать k - количество единиц в нашем числе, и ans - остаток от деления нашего числа на N. Если он в какой-то момент получился равен нулю, это значит, что мы нашли число. В нем k единиц. Мы будем продолжать поиски 3 * 10⁷ раз. Если так ничего и не нашли - выводим NO.
//PascalABC.NET
//В задаче есть ограничение по времени в 1 секунду
//поэтому была использована функция milliseconds
//которая возвращает кол-во миллисекунд с момента
//начала работы программы
var
N, cur, count: uint64;
begin
read(N);
cur := 1;
count := 0;
while (cur <> 0) and (milliseconds() / 1000 < 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.