Посчитайте количество десятичных натуральных чисел, не превосходящих 63, при записи которых в четверичной системе счисления результат будет заканчиваться на две одинаковые цифры —--- ответ 15... главное решение)) и подробное об...

Посчитайте количество десятичных натуральных чисел, не превосходящих 63, при записи которых в четверичной системе счисления результат будет заканчиваться на две одинаковые цифры —--- ответ 15... главное решение)) и подробное обьяснение, я слоупок в этом -_-
Гость
Ответ(ы) на вопрос:
Гость
 Суть алгоритма: 0) счётчик  одинаковывых цифр   устанавливаем в с:=0;     1) Организуем цикл от 1 до 63   2) Каждое из этих чисел переводим в 4-ичную систему счисления  3) Переводим 4-ичное число в  строку. 4) Если длина строки =2 символа то сравниваем второй и первый символ                        если равны то c:=c+1; 5)  Если длина строки =3 символа то сравниваем второй и третий символ                        если равны то c:=c+1;  6) Печать результата   7) Выход     Program Count;  Uses Crt;  var i,c,l:integer;  s,s2:string; Function FromDec(n:string; radix: longint):string; var S:string; i,m:longint; const digit: string[36]='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; begin m:=0; for i:=1 to length(n) do m:=m*10+(Ord(n[i])-48); S:=''; repeat s:=digit[(m mod radix)+1]+s; m:=m div radix; until m=0; FromDec:=s; End; function IntToStr(I: Longint): String; var S: string[11]; begin Str(I, S); IntToStr := S; end; {Основная программа} begin clrscr; c:=0; for i:=1 to 63 do begin s2:=IntToStr(i); s:=FromDec(s2,4); l:=length(s); if (l=2) then if (s[2]=s[1]) then c:=c+1; if (l=3) then  if (s[l]=s[l-1]) then c:=c+1; end; writeln('Количество одинаковых:',c);  readkey; end.        
Не нашли ответ?
Ответить на вопрос
Похожие вопросы