Написати програму, яка буде знаходити n-й член геометричної прогресії за загальною формулою n-го члена. Для піднесення знаменника прогресії до степеня написати ПРОЦЕДУРУ піднесення до степеня.
Змінні, необхідні для роботи програми: b1, bn, n, q, i.
Змінні, які буде використовувати процедура: a, m, am.
Тип змінних: всі змінні цілі. ( Програма Pascal ) С подробным решением
Тогда в бак 2 надо сложить стекло или жесть.
1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137.
Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170.
Всего 141 + 137 + 170 = 448 перемещений.
1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139.
Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183.
Всего 141 + 139 + 183 = 463 > 448.
2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141.
2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150.
Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170.
Всего 141 + 150 + 170 = 461 > 448.
2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183.
Тогда в бак 3 кладем жесть. 64 + 95 = 159
Всего 141 + 183 + 159 = 483 > 448.
3) Положим бумагу в бак 1. Это будет 83 + 83 = 166.
3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137.
Тогда жесть пойдет в бак 3. 64 + 95 = 159.
Всего 166 + 137 + 159 = 465 > 448.
3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150.
Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139.
Всего 166 + 150 + 139 = 455 > 448.
Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам.
ответ: минимальное количество перемещений равно 448.
procedure GetProdNeg(a:array of integer; var p:real);
// произведение отрицательных элементов
begin
p:=a.Where(x->x<0).Aggregate(1.0,(p,e)->p*e)
end;
function IsPrime(n:integer):boolean:=
Range(2,Round(sqrt(n))).All(i->n mod i<>0);
procedure ArrPrime(n:integer; var a:array of integer);
// массив простых чисел не больших n
begin
a:=Range(2,n).Where(i->IsPrime(i)).ToArray
end;
begin
var n:=ReadInteger('n=');
var a:=ArrRandom(n,-50,50); a.Println;
var r:real;
GetProdNeg(a,r);
Writeln('Произведение ',r);
n:=ReadInteger('n=');
var b:array of integer;
ArrPrime(n,b);
b.Println
end.
Тестовое решение:
n= 15
27 -7 -36 40 -15 -21 -47 -28 -12 45 3 -38 -15 1 -39
Произведение 27866837980800
n= 300
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293