1) a=5 b=a*4 b= b div 7+a a=3*(b div a) 2) a=129 b=a div 10 a=a-10*b= b=b div 3) a=145 b=a div 10 a= a-b b=a div b 4)a=5 b=a*3 a=b mod 7+a b=b mod a+4 5)a=5 a=2*a-3 b=12-21/a b=3*b-a
Const nn=100; { предельное количество номиналов банкнот } type bnk=longint; var nom,res:array[1..nn] of bnk; i,n,koln:integer; sum:bnk;
procedure Sort(n:integer); var i,j:integer; t:bnk; begin for i := 1 to n-1 do for j := 1 to n-i do if nom[j] > nom[j+1] then begin t := nom[j]; nom[j] := nom[j+1]; nom[j+1] := t end end;
begin Readln(n); for i:=1 to n do Read(nom[i]); Readln(sum); Sort(n); koln:=0; i:=n; while sum>0 do begin while nom[i]>sum do Dec(i); Inc(koln); res[koln]:=nom[i]; sum:=sum mod nom[i]; if (sum<nom[1]) and (sum<>0) then begin sum:=0; koln:=-1 end end; if koln=0 then koln:=-1; Writeln(koln); for i:=1 to koln do Write(res[i],' '); Writeln end.
Попробую. Начало Ввод количества номиналов N Объявляем массивов X(N), Y(N) Цикл по i от 1 до N Ввод очередного номинала X(i) Конец цикла по i Ввод суммы для выдачи S Подпрограмма сортировки массива X(N) по возрастанию. Например, пузырьковой сортировкой. k = 0 ' k - это количество банкнот Цикл, пока S > 0 Если S < X(1), то ' Если остаток меньше самого маленького номинала S = 0: k = -1 ' то выдать полную сумму невозможно Выход сразу из цикла по S Конец Если i = N Цикл, пока X(i) > S i = i - 1 Конец цикла по X(i) Y(k) = X(i) ' записываем очередную банкноту в массив Y(N) S = S - X(i) ' определяем остаток k = k + 1 ' увеличиваем счетчик банкнот Конец цикла по S Если k = 0, то k = -1 ' выдать сумму не смогли Вывод k Если k > 0, то ' Если сумму можно выдать Цикл по i от 1 до k Вывод Y(i) + " " Конец цикла по i Конец Если Конец
Алгоритм пузырьковой сортировки: Начало подпрограммы F = True ' Это булева переменная - признак успешности сортировки Цикл вечный без всяких условий Если F = True, то F = False Цикл по i от 1 до N-1 Если X(i) > X(i+1), то ' если два соседних числа не отсортированы Q = X(i) : X(i) = X(i+1) : X(i+1) = Q ' меняем местами эти числа F = True Конец Если Конец цикла по i Иначе Выход из Цикла ' Если F = False Конец Если Конец вечного Цикла Конец подпрограммы
b=a*4
b= b div 7+a
a=3*(b div a)
a=5 b=20
a=5 b=7
a=3 b=7
2) a=129
b=a div 10
a=a-10*b=
b=b div
Что-то в двух последних строках не так...
3) a=145
b=a div 10
a= a-b
b=a div b
a=145 b=14
a=131 b=14
a=131 b=9
4)a=5
b=a*3
a=b mod 7+a
b=b mod a+4
a=5 b=15
a=6 b=15
a=6 b=7
5)a=5
a=2*a-3
b=12-21/a
b=3*b-a
a=7 b=0
a=7 b=9
a=7 b=20