Дан массив из 30 элементов, принимающих значения от 0 до 100. найти произведение двузначных чётных элементов массива, которые начинаются с цифры 5, 6 или 7.гарантируется, что в исходном массиве есть хотя бы один такой элемент.
Pascal: var a:array [1..30] of integer; i:integer; p:longint; begin p:=1; randomize; a[1]:=random(21)+50; for i:=2 to 29 do a[i]:=random(100); a[30]:=random(21)+50; for i:=1 to 30 do write (a[i],' '); writeln; for i:=1 to 30 do if (a[i] in [10..99]) and (a[i] mod 2 = 0) and ((a[i] div 10) in [5..7]) then p:=p*a[i]; writeln ('Proizvedenie: ',p); readln; end.
C++: #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int main() { int a[30],i; unsigned long long p = 1; srand (time(NULL)); a[0] = rand()%70+50; for (i = 1; i<29; i++) a[i] = rand()%100; a[29] = rand()%7+50; for (i = 0; i<30; i++) { cout <<a[i] <<" "; if ((a[i]/10==5 || a[i]/10==6 || a[i]/10==7) && (a[i]>9 && a[i]<100) && a[i]%2==0) p*=a[i]; } cout <<endl; cout <<"Proizvedenie: " <<p <<endl; return 0; }
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016 // Внимание! Если программа не работает, обновите версию!
function MaxSubstr(s1,s2:string):string; begin var a:=new integer[s1.Length+1,s2.Length+1]; var u:=0; var v:=0; for var i:=0 to s1.Length-1 do for var j:=0 to s2.Length-1 do if s1[i+1]=s2[j+1] then begin a[i+1,j+1]:=a[i,j]+1; if a[i+1,j+1]>a[u,v] then begin u:=i+1; v:=j+1 end end; Result:=s1.Substring(u-a[u,v],a[u,v]) end;
begin var s:='trapperkaperkatrter'; var t:='appekaperspamer'; Writeln(MaxSubstr(s,t)) end.
Для начала посчитаем сколько символов в твоем предложении (пробелы, знаки препинания, буквы). Их там 28 [Терпение и труд все перетрут]. Как мы знаем, в кодировке Unicode - 1 символ занимает 16 бит памяти. Умножим 28 символов на 16 и получим 448 бит [28*16=448 бит]. Теперь, если это требуется, переведем биты в байты и килобайты. 1 байт памяти занимает 8 бит. Делим 448 бит на 8 получаем 56 [448/8=56 байт]. 1 кбайт памяти, в свою очередь, занимает 1024 байт памяти. Делим 56 байт на 1024 (советую использовать калькулятор) получаем 0,05 кбайт [56/1024=0,0546875]. В ответе пишем одно из получившихся значений, которое требуется написать [448 бит или 56 байт или 0,05 кбайт]
var a:array [1..30] of integer;
i:integer;
p:longint;
begin
p:=1;
randomize;
a[1]:=random(21)+50;
for i:=2 to 29 do a[i]:=random(100);
a[30]:=random(21)+50;
for i:=1 to 30 do write (a[i],' ');
writeln;
for i:=1 to 30 do
if (a[i] in [10..99]) and (a[i] mod 2 = 0) and ((a[i] div 10) in [5..7]) then p:=p*a[i];
writeln ('Proizvedenie: ',p);
readln;
end.
C++:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int a[30],i;
unsigned long long p = 1;
srand (time(NULL));
a[0] = rand()%70+50;
for (i = 1; i<29; i++)
a[i] = rand()%100;
a[29] = rand()%7+50;
for (i = 0; i<30; i++)
{
cout <<a[i] <<" ";
if ((a[i]/10==5 || a[i]/10==6 || a[i]/10==7) && (a[i]>9 && a[i]<100) && a[i]%2==0)
p*=a[i];
}
cout <<endl;
cout <<"Proizvedenie: " <<p <<endl;
return 0;
}