Посчитайте количество десятичных натуральных чисел, не превосходящих 63, при записи которых в четверичной системе счисления результат будет заканчиваться на две одинаковые цифры ответ главное решение)) и подробное обьяснение, я слоупок в этом
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]='0123456789'; 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.
Суть алгоритма:
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]='0123456789';
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.