Страница 1 из 1

Число, состоящее из 7 и 0

Добавлено: 15 дек 2010, 10:53
student00
Добрый день. Пытаюсь решить такую задачу: найти число, состоящее только из цифр 0 и 7, которое делится на заданное число без остатка. Т.е. вводим 1, получаем 7; вводим 2 -> 70; 3 -> 777, и т.д.
Вроде всё понятно, но не знаю с какого конца к задачке подобраться( Вобщем нашёл в инете такое решение:

Код: Выделить всё

var a, c, n : integer; 
b : boolean; 
begin 

readln(n);
a:=6;
repeat
b:=true;
inc(a);
if a mod n=0 then begin {зачем тут проверять условие, если без него то же самое?}
c:=a;
repeat
if (c mod 10=7)or(c mod 10=0)then c:=c div 10
else begin b:=false; c:=0; end;
until c=0;
end;
until (a mod n =0)and b;
write(a);
readln;
end.
Код вроде рабочий, но если честно, ничего не понял (нет, что такое циклы и условия знаю конечно, неясен сам алгоритм.) Пожалуйста, объясните кто-нибудь, что тут да как, можно в виде комментов. Или кто может, предложите свой вариант (хотя бы алгоритма). Заранее спасибо огромное.

Re: Число, состоящее из 7 и 0

Добавлено: 15 дек 2010, 12:55
student00
Ну вот, уже сам со всем разобрался :) Только единственное, не понял, зачем нужно было условие (см. комментарий в коде). И почему при вводе 9 прога подвисает (догадка: возможно для 9 такого числа просто не существует?) Надеюсь, кто-нибудь подскажет, спасибо!

Re: Число, состоящее из 7 и 0

Добавлено: 16 дек 2010, 12:40
BBB
Для 9 число существует, по аналогии с тройкой: 777777777
М/б, есть и меньше, но приведенное соответствует условию.

Зацикливание может произойти из-за нехватик разрядности. Проверяемое число - a- описано как integer. Если это запускается на Pascal-е, то там максимальное значение для integer (учитывая, что это еще и ЗНАКОВОЕ число) 32 тысяч (примерно). Если в этих пределах число не найдено, то при очередном операторе inc (a) происходит переполнение, значение a становится равным минус 32 тысячи (отрицательным). И в дальнейшем зацикливается, вновь и вновь пытаясь найти чсило, которого в данном диапазоне нет.

Если в Delphi, то там integer четырехбайтный, т.е. макс.значение 2 миллиарда.

Re: Число, состоящее из 7 и 0

Добавлено: 17 дек 2010, 13:08
student00
А вы оказались правы, просто я протупил немного. Просто это число ищется очень долго, около 20 сек) Алгоритм-то построен на простом переборе, может можно как-то лучше, но я даже представить не могу.