Сначала запишем выражение в виде степеней двойки:
2^16096 - 2^3210 + 2^1024 - 2^7 + 2
Далее последовательно запишем представление числа по действиям:
1) 2^16096 = (в позиции 16096)10000...0
2^3210 = (в позиции 3210)10000...0
При их разности получится:
(16095)111111...111(3210)000...0
2) Прибавляем 2^1024 и получается (16095)111111...111(3210)000...01(1024)00
3) (16095)111111...111(3210)000...01(1023)11(7)0000000
4) (16095)111111...111(3210)000...01(1023)11(7)0000010
Вычисляем кол-о 1: 16095 - 3210 + 1 + 1023 - 7 + 1 + 1 = 13904
Я вот тоже Вышел порешать =).
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.