Условие задачи
1.Новый интернет-провайдер предоставляет услугу доступа в интернет с посекундной тарификацией . Для подключения нужно купить карточку позволяющую пользоваться интернетом определенное количество секунд .
при этом компания предает карточки стоимостью 1,2,4,..., 2 в 30-ой степени рублей на а0, а2,..... а30 секунд соответственно.
Родители разрешили Пете пользоваться интернетом М секунд . Определите за какую наименьшую сумму он сможет купить карточки , которые позволяют ему пользоваться интернетом не менее М секунд. Естественно, что Петя может купить как карточки различного достоинтства, так и несколько карточек одного достоинтства.
ПОЯСНЕНИЕ
Если ai<2•ai-1, то можно вместо карточки стоимотью 2i купить 2 карточки меньшей стоимости. Заменяем ai лучшим вариантом.
Затем покупаем карточки на нужное время, на каждом шаге выбирая карточку (набор карточек) с большим временем, но не превосходящим времени, которое осталось набрать.
Посмотреть решение
Как перевести этот код с паскаля в делфи?
var
a:array[0..30] of int64;
p,m:int64;
i:integer;
begin
read(m);
for i:=0 to 30 do
read(a[i]);
for i:=1 to 30 do
if a[i-1]*2>a[i] then
a[i]:=a[i-1]*2;
p:=0;
for i:=30 downto 0 do
if m>=a[i] then
begin
m:=m-a[i];
p:=p+(1 shl i);
end;
if m>0 then inc(p);
writeln(p);
end.
Я его перевел посмотрите правильно ли ?
var
a:array[0..30] of int64;
p,m:int64;
i:integer;
Procedure TForm1.Button1Click(Sender;Tobject)
begin
m:=strtoint(Edit1.Text);
for i:=0 to 30 do
a[i]:=strtoint(StringGrid.Cells[i-1,0]; label1.caption:=' ';
for i:=1 to 30 do
if a[i-1]*2>a[i] then
a[i]:=a[i-1]*2;
p:=0;
for i:=30 downto 0 do
if m>=a[i] then
begin
m:=m-a[i];
p:=p+(1 shl i); <<<<<<<<<<========= что за shl i ????????????
end;
if m>0 then label1.Caption:=inttostr(p) + 'наименьшая сумма';
end.
[quote name='dron4ik' date='20.06.2008 20:32' post='124655']
Условие задачи
1.Новый интернет-провайдер предоставляет услугу доступа в интернет с посекундной тарификацией . Для подключения нужно купить карточку позволяющую пользоваться интернетом определенное количество секунд .
при этом компания предает карточки стоимостью 1,2,4,..., 2 в 30-ой степени рублей на а0, а2,..... а30 секунд соответственно.
Родители разрешили Пете пользоваться интернетом М секунд . Определите за какую наименьшую сумму он сможет купить карточки , которые позволяют ему пользоваться интернетом не менее М секунд. Естественно, что Петя может купить как карточки различного достоинтства, так и несколько карточек одного достоинтства.
ПОЯСНЕНИЕ
Если ai<2•ai-1, то можно вместо карточки стоимотью 2i купить 2 карточки меньшей стоимости. Заменяем ai лучшим вариантом.
Затем покупаем карточки на нужное время, на каждом шаге выбирая карточку (набор карточек) с большим временем, но не превосходящим времени, которое осталось набрать.
Посмотреть решение
Как перевести этот код с паскаля в делфи?
var
a:array[0..30] of int64;
p,m:int64;
i:integer;
begin
read(m);
for i:=0 to 30 do
read(a[i]);
for i:=1 to 30 do
if a[i-1]*2>a[i] then
a[i]:=a[i-1]*2;
p:=0;
for i:=30 downto 0 do
if m>=a[i] then
begin
m:=m-a[i];
p:=p+(1 shl i);
end;
if m>0 then inc(p);
writeln(p);
end.
Я его перевел посмотрите правильно ли ?
var
a:array[0..30] of int64;
p,m:int64;
i:integer;
Procedure TForm1.Button1Click(Sender;Tobject)
begin
m:=strtoint(Edit1.Text);
for i:=0 to 30 do
a[i]:=strtoint(StringGrid.Cells[i-1,0]; label1.caption:=' ';
for i:=1 to 30 do
if a[i-1]*2>a[i] then
a[i]:=a[i-1]*2;
p:=0;
for i:=30 downto 0 do
if m>=a[i] then
begin
m:=m-a[i];
p:=p+(1 shl i); <<<<<<<<<<========= что за shl i ????????????
end;
if m>0 then label1.Caption:=inttostr(p) + 'наименьшая сумма';
end.
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. https://www.thetechbizz.com/how-to-avoid-scams-in-online-casino/