Форум » Обработка целых чисел » 17 » Ответить

17

Артур: (№ 2321) (А. Куканова) Рассматривается множество целых чисел, принадлежащих числовому отрезку [1000; 9999], запись которых в шестеричной системе имеет не более 5 цифр и закачивается на 13 или 14. Найдите количество таких чисел и максимальное из них. var p,x,k,i,max,n: integer; begin max:=0; n:=0; for i:=1000 to 9999 do begin x:=i; p:=0; while x>0 do begin k:= x mod 6; x:= x div 6; p:=P+1; end; if (p<=5) then if (i mod 36 =13) or ( i mod 36=14)then begin if i>=max then begin max:=i; n:=n+1; end; end;end; writeln(n,' ',max); end. Не совпадает ответ

Ответов - 4

Поляков: Артур пишет: if (i mod 36 =13) or ( i mod 36=14)then Вы берете 13 и 14 в десятичной системе.

Артур: Спасибо большое (там получается 9 и 10)

Поляков: Артур пишет: там получается 9 и 10 Да.


GasDM: По-моему, код можно сократить. Есть команды, которые можно смело убрать из программы: k:= x mod 6; - с цифрой делать ничего не нужно f i>=max then begin max:=i; - рассматриваемые числа упорядоченны по возрастанию, т.о. следующее найденное число будет БОЛЬШЕ предыдущего Вот мой вариант: [pre2] var n, kNum, Max, kC, x : integer; begin max := 0; kNum := 0; for n := 1000 to 9999 do begin x := n; kC := 0; while x > 0 do begin kC := kC + 1; x:= x div 6; end; if (kC <= 5) and ((n mod 36 = 9) or (n mod 36 = 10)) then begin max := n; kNum := kNum + 1; end; end; writeln(kNum,' ',max); end. [/pre2] Еще один вариант решения: [pre2] max6 := 3215 - 1; //максимальное 5-значное число в пятеричной системе 55555, в десятичной это будет 5**5 - 1 = 3214 (** - возведение в степень) for n:= a to max6 do if ((n mod 6 = 3) or (n mod 6 = 4)) and (n div 6 mod 6 = 1) then begin inc(k); max := n; end; [/pre2]



полная версия страницы