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

0 голосов
38 просмотров

Помогите плз) Надо написать программу на любом ПаскалеПрограммист на Северном полюсе работал за компьютером в варежках и поэтому мог набирать только 0 и 1, а клавиша 0 запала. Сможет ли он набрать число, состоящее только из единиц и при этом кратное заданному N?Входные данныеПрограмме дано число N (1 ≤ N ≤ 10^6).Выходные данныеВывести минимальное число, удволетворяющее требованию, или "NO" , если такого числа не существует.Если что, это 1453 задачка на Информатиксе


Информатика Начинающий (134 баллов)
Дано ответов: 2
0 голосов
Одаренный (3.7k баллов)

Ответ:

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

Объяснение:

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


image
0 голосов
Одаренный (3.7k баллов)

//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.

оставил комментарий Одаренный (3.7k баллов)

А какая версия паскаля?

оставил комментарий Начинающий (134 баллов)

хз я в информатикс заливаю

оставил комментарий Начинающий (134 баллов)
оставил комментарий Одаренный (3.7k баллов)

Там есть компилятор Free Pascal 3.0.2, а есть PascalABC 3.4.2

оставил комментарий Одаренный (3.7k баллов)

Мое решение проверялось под Free Pascal, но и на PascalABC тоже заходит.

оставил комментарий Начинающий (134 баллов)

ок, щас проверю

оставил комментарий Начинающий (134 баллов)

да все работает

оставил комментарий Начинающий (134 баллов)

сори дексель

оставил комментарий Начинающий (134 баллов)

как перевыбрать лучший ответ?

оставил комментарий Одаренный (3.7k баллов)

А вот никак))

...