@Kerson

Простая задачка на Pascal?

Рассматривается множество целых чисел, принадлежащих числовому отрезку [1000;
9999], которые удовлетворяют следующим условиям:
− не делятся нацело на 5, 7 и 11;
− запись в троичной системе счисления имеет ровно 8 цифр.
Найдите минимальное и максимальное из этих чисел.

Я сделал так, но что-то не работает:

program Z33;
var max,x1,min,p,x,k:integer;
begin
max:=1000;
k:=0;
min:=9999;
For x:= 1000 to 9999 do
begin
x1:=x;
while x1 div 3>=2 do
begin
p:=x1 mod 3;
k:= k+1;
x1:=x1 div 3;
end;
k:=k+1;
if (k=8)then
begin
if ((x mod 5<>0) and (x mod 7 <>0)and (x mod 11 <>0)) then
begin
if min>x then
begin
min:=x;
end;
if max begin
max:=x;
end;
end;
end;
end;
Writeln(min,' ',max);
end.
  • Вопрос задан
  • 3004 просмотра
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM
Delphi Developer, сис. админ
Перед логическим началом использования k - ты его не сбрасываешь.
Оптимизация: Логично сбросить его до 1, чем после проверки увеличивать на 1.
Переменная p не используется ни каким образом ни сама ни её значение, которое ты вычисляешь для неё в цикле.
program Z33;

var
  max, x1, min, x, k: integer;

begin
  max := 1000;
  min := 9999;
  for x := 1000 to 9999 do
  begin
    x1 := x;
    k := 1;
    while x1 div 3 >= 2 do
    begin
      Inc(k);
      x1 := x1 div 3;
    end;
    if k = 8 then
    begin
      if (x mod 5 <> 0) and (x mod 7 <> 0) and (x mod 11 <> 0) then
      begin
        if min > x then
          min := x;
        if max < x then
          max := x;
      end;
    end;
  end;
  Writeln(min, ' ', max);
end.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы