{Признак делимости. Дано натуральное число N (N<=1000).
Найти минимальное число A, которое делится нацело на N,
и в десятичной записи которого используются лишь нули и единицы.
Например, для N=537; A=11010111.}

uses crt;
var
N, i, m, S, K: integer;
A: string;
flag, error: boolean;

begin
writeln (' Признак делимости.');
// Вводим число N - нужный нам делитель
repeat
error := True;
writeln;
write ('N = ');
readln(N);

// "Защита от дурака":
If not((n>0) and (n<=1000)) then
begin
// "Защита от дурака_1": при попытке ввести число N>1000 программа выводит на экран сообщение об ошибке
if N>1000 then
writeln('Ошибка ввода №1! Вы ввели число N>1000. Пожалуйста, повторите ввод. N<1000');

// "Защита от дурака_2": при попытке ввести отрицательное число программа выводит на экран сообщение об ошибке
if N<0 then
writeln ('Ошибка ввода №2! Вы ввели отрицательное число. Пожалуйста, повторите ввод. N>0');

// "Защита от дурака_3": при попытке ввести число 0 программа выводит на экран сообщение об ошибке
if N=0 then
writeln ('Ошибка ввода №3! Вы же помните - на 0 делить нельзя! Пожалуйста, повторите ввод. N>0');
error:= false;
end;
until error;
// Поиск числа, которое делится на N
i:=0;
repeat
inc(i);
K:=N*i;
// Преобразуем число K в string в A
str(K,A);
// Проверяем цифры "числа" A:
S:=0;
for m:=1 to length(A) do
begin
if (A[m]='1') or (A[m]='0') then
inc(S);
if S=length(A) then
flag:=true;
end;
until flag;
// Выводим искомое минимальное делимое(т.е. число, на которое нацело делится N)
write('A = ');
writeln(A);
writeln;
write(' Программа завершенна.');
end.



проблема в том, что эта программа не эффективна. и, кроме того, я так и не дождалась результата при введении чисел, кратных 9, как исходных данных... помогите, на днях сдавать....