| 
| 
 | Вопрос # 3 640/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Помогите пожалуйста решить следующую задачу:
 Найти все натуральные числа не превосходящие N, которые делятся на каждую из своих цифр.
 
|  |   Вопрос задал: prog-mer (статус: Посетитель)Вопрос отправлен: 10 января 2010, 22:23
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 11 января 2010, 14:12; участников в обсуждении: 1. 
|   | IlluminatI (статус: 2-ой класс), 11 января 2010, 14:12 [#1]:Здравствуйте Олег Валерьевич! Вот решение вашей задачи, правда непонятно что делать, если в числе содержится 0 (в моем решение он учитывается как делитель):
 
 
 uses
  SysUtils;
 
var n: integer;
    k: integer = 0; // количество чисел
    i: integer; // параметр цикла
 
function Delit(x: integer): boolean;
var z, y: integer;
begin
 y:=x;
 while x (не равно) 0 do
  begin
   z:=x mod 10; // отделяем цифру от числа
   x:=x div 10; // уменьшаем число на 1 цифру 
   if z (не равно) 0 then  // проверка на 0, чтобы не было деления на 0
   if not(y mod z = 0) then // если не делится, сообщим об этом и выйдем
    begin
     Result:=false;
     exit;
    end;
  end;
 Result := true; // все ок, число делится 
end;
 
begin
 writeln('Input N'); // читаем N
 readln(n);
 for i:=1 to n do // цикл от 1..N
  if Delit(i) then // проверяем в функции
   begin
    writeln('Chislo ',i,' delitsa na vse svoi cifri');
    inc(k); // считаем количество 
   end;
 writeln('Vsego chisel: ', k); // выводим
 readln;
end. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |