В диапазоне -32 до +32 находится 65 значений, для кодирования 1 значения потребуется 7 бит (2⁶ = 64 этого не хватит, а 2⁷ = 128)
40960*7 = 286720 бит = 35840 байт = 35 Кб
ответ: 35 Кб
Разумеется, что стоит дешевле.
Дешевле использовать мощность ЦПУ и оперативную память, нежели вносить новый процессор(ГПУ) и видеопамять для него.
Но, конечно, стоит отметить, что подобная экономия очень сильно сказывается на производительности.
Перебираешь все взаимно простые m > n разной четности, так чтобы m*m было меньше 30. И формируешь тройки по формуле:
k*(m*m-n*n, 2*m*n, m*m + n*n)
Например так:
function gcd(a,b: integer): integer;
begin
if b = 0 then gcd := a
else if (a > b) and (b > 0) then gcd := gcd(b, a mod b)
else gcd := gcd(b, a);
end;
procedure Print(m,n:integer);
var i, a, b, c: integer;
begin
repeat
i := i + 1;
a := (m*m-n*n)*i;
b := 2*m*n*i;
c := (m*m+n*n)*i;
if c < 30 then
writeln(a, ' ', b, ' ', c)
else break;
until false;
end;
var m, n, s: integer;
begin
s := Trunc(Sqrt(30));
for m := 1 to s do
for n := m + 1 to s do
if (gcd(n, m) = 1) and ((m mod 2)<>(n mod 2)) then
Print(n, m)
<span>end.</span>
#include "iostream"
using namespace std;
int main(){
int cena = 0;
cin >> cena;
if(cena > 1000)
cout << "cena s ckidkoi= " << cena -cena * 0.15;
else
cout << no ckidka ;
return 0;
}
Var ar:array[1..12] of integer;
i:integer;
begin;
randomize;
writeln('Main array:');
for i:=1 to 12 do
begin;
ar[i]:=random(1,11);
writeln(ar[i]);
end;
writeln('Changed array:');
for i:=1 to 12 do
begin;
if ar[i] mod 2=0 then ar[i]:=sqr(ar[i]);
writeln(ar[i]);
end;
<span>end.</span>