• Помогите плз) Надо написать программу на любом Паскале


    Программист на Северном полюсе работал за компьютером в варежках и поэтому мог набирать только 0 и 1, а клавиша 0 запала. Сможет ли он набрать число, состоящее только из единиц и при этом кратное заданному N?


    Входные данные

    Программе дано число N (1 ≤ N ≤ 10^6).


    Выходные данные

    Вывести минимальное число, удволетворяющее требованию, или "NO" , если такого числа не существует.


    Если что, это 1453 задачка на Информатиксе

Ответы 7

  • ок, щас проверю
  • да все работает
    • Автор:

      kelsey73
    • 5 лет назад
    • 0
  • сори дексель
  • как перевыбрать лучший ответ?
    • Автор:

      kiwit0ng
    • 5 лет назад
    • 0
  • А вот никак))
    • Автор:

      bradley98
    • 5 лет назад
    • 0
  • Ответ:

    Код дан в приложении.

    Объяснение:

    Поддерживать само число на паскале будет довольно сложно без использования biginteger. Будем поддерживать k - количество единиц в нашем числе, и ans - остаток от деления нашего числа на N. Если он в какой-то момент получился равен нулю, это значит, что мы нашли число. В нем k единиц. Мы будем продолжать поиски 3 * 10⁷ раз. Если так ничего и не нашли - выводим NO.

    answer img
  • //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.

    answer img
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years