Небольшое наблюдение: если Денис может использовать ровно M лопастей, то он может использовать их так, чтобы четырёхлопастных спиннеров было не больше двух. (Если их три или больше, то каждые три четырёхлопастных спиннера можно поменять на 4 трёхлопастных).
Код (C++)
#include <iostream>
int main() {
long long M;
std::cin >> M;
for (int f = 0; f < 3 && f * 4 <= M; f++) {
if ((M - f * 4) % 3 == 0) {
std::cout << (M - f * 4) / 3 << " " << f;
return 0;
}
}
std::cout << "0 0";
return 0;
}
<em>Проверено на fpc 3.0.0 </em>
const
m=6; // строк
n=9; // столбцов
var
a:array[1..m,1..n] of integer;
i,j,k1,k2,s,k:integer;
begin
Writeln('Введите границы диапазона: '); Read(k1,k2);
Randomize;
s:=0; k:=0;
for i:=1 to m do begin
for j:=1 to n do begin
a[i,j]:=Random(199)-99; // [-99;99]
Write(a[i,j]:4);
if (a[i,j]>=k1) and (a[i,j]<=k2) then begin
Inc(k); s:=s+a[i,j]
end
end;
Writeln
end;
Writeln('Отобрано элементов: ',k,', их сумма равна ',s)
end.
<u>Пример</u>
Введите границы диапазона:
-20 55
-2 -52 -11 -12 70 -15 90 -51 75
-54 -92 32 54 -72 -24 -40 -37 -20
0 -14 -79 -1 -39 -34 39 47 34
-91 -98 -68 -16 -56 -55 97 66 59
-48 -67 -34 92 -77 12 -67 -23 -90
75 85 65 -98 -58 -53 -6 34 33
Отобрано элементов: 18, их сумма равна 188
<h2>Задание 1</h2>
1⁵ 0⁴ 1³ 0² 1¹ 0⁰ = 1 · 2⁵ + 0 · 2⁴ + 1 · 2³ + 0 · 2² + 1 · 2¹ + 0 · 2⁰ = 32 + 0 + 8 + 0 + 2 + 0 = 42₁₀
<h2>Задание 2</h2>
35 = 32 + 2 + 1 = 2⁵ + 2¹ + 2⁰ = 100 000 + 10 + 1 (в столбик - двоичное сложение) = 100011₂
<h2>Задание 3</h2>
Стоит помнить, что:
1 + 1 = 10
1 + 1 + 1 = 11
1 + 1 + 1 + 1 = 100
Это происходит, потому что в 2-й системе счисления всего два числа - 0 и 1. В 10-й системе счисления это выглядело бы примерно так:
...
1 + 9 = 10
...
1 + 19 = 20
...
1 + 99 = 100
То есть переполнение числа приводит к тому, что цифра слева увеличивается на единицу. В случае, если есть девятка - то цифра слева увеличивается на 1.
999 + 1 = 1 0 0 0
<em>// PascalABC.NET 3.3, сборка 1583 от 25.11.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var n:=ReadInteger('n=');
var a:=ArrRandom(n,-99,99); a.Println;
var b:=ArrRandom(n,-99,99); b.Println;
a.Zip(b,(x,y)->x*y).Println
end.
<u>Пример</u>
n= 13
-33 -22 -61 -21 24 -40 -30 77 46 19 -60 2 53
-99 27 90 -13 -17 19 76 -85 -18 4 91 -93 -59
3267 -594 -5490 273 -408 -760 -2280 -6545 -828 76 -5460 -186 -3127