Перевод целого числа из десятичной системы счисления в систему с другим основанием делается путем последовательного целочисленного деления числа на основание системы с запоминанием остатков. Практика показывает, что если надо сделать перевод десятичного числа в системы по основанию 16, 8 и 2, то наименьшие трудозатраты получаются, когда перевод начинают с шестнадцатиричной системы, поскольку количество делений получается минимальным. 600 / 16 = 37 и остаток 8. 37 / 16 = 2 и остаток 5 Выписываем числа в обратном порядке, получаем 258. Итак, 600 (10) = 258 (16). Для перехода к двоичной системе каждую цифру шестнадцатиричного числа записываем в виде 4х разрядного двоичного числа (тетрады): 258 (16) = 0010 0101 1000 (2) или просто 1001011000 (незначащие нули опускаем). Для перехода к восьмеричной системе разбиваем справа налево двоичный код на триады (т.е. по три двоичных разряда) и каждую триаду заменяем восьмеричной цифрой. 1001011000 (2) = 1 001 011 000 (2) = 1130 (8)
600 / 16 = 37 и остаток 8.
37 / 16 = 2 и остаток 5
Выписываем числа в обратном порядке, получаем 258.
Итак, 600 (10) = 258 (16).
Для перехода к двоичной системе каждую цифру шестнадцатиричного числа записываем в виде 4х разрядного двоичного числа (тетрады):
258 (16) = 0010 0101 1000 (2) или просто 1001011000 (незначащие нули опускаем).
Для перехода к восьмеричной системе разбиваем справа налево двоичный код на триады (т.е. по три двоичных разряда) и каждую триаду заменяем восьмеричной цифрой.
1001011000 (2) = 1 001 011 000 (2) = 1130 (8)
Я вот тоже Вышел порешать =).
var p: array [1..1000] of record
slovo:string;
k:integer;
end;
N,i,j,max:integer;
c:char;
a:array [97..122] of integer;
BEGIN
max:=0;
readln(N);
for i:=1 to N do
begin
p[i].slovo:='';
repeat
read(c);
p[i].slovo:=p[i].slovo+c
until c=' ';
readln(p[i].k);
for j:=1 to length(p[i].slovo) do
if (ord(p[i].slovo[j])>=97) and (ord(p[i].slovo[j])<=122) then
a[ord(p[i].slovo[j])]:=a[ord(p[i].slovo[j])]+p[i].k;
end;
for j:=97 to 122 do
if a[j]>max then
max:=a[j];
write(max);
end.