asyaurkova
?>

Внекотором государстве в обращении находятся банкноты определенных номиналов. национальный банк хочет, чтобы банкомат выдавал любую за сумму при минимального числа банкнот, считая, что запас банкнот каждого номинала неограничен. национальному банку решить эту . формат ввода первая строка входных данных содержит натуральное число n не превосходящее 100 — количество номиналов банкнот в обращении. вторая строка входных данных содержит n различных натуральных чисел x1, x2, …, xn, не превосходящих 10 в 6 степени — номиналы банкнот. третья строчка содержит натуральное число s, не превосходящее 10 в 6 степени — сумму, которую необходимо выдать. формат вывода в первую строку выходного файла выведите минимальное число слагаемых (или -1, если такого представления не существует во вторую строку выведите это представление в любом порядке. пример ввод 5 1 3 7 12 32 40 вывод 3 32 7 1

Информатика

Ответы

banketvoshod
Попробую.
Начало
Ввод количества номиналов 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
Конец Если
Конец вечного Цикла
Конец подпрограммы
emartynova25
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.

Тестовые решения
Контрольный пример:
5
1 3 7 12 32
40
3
32 7 1
Еще один пример:
8
1 5 10 50 100 500 1000 5000
4586
6
1000 500 50 10 5 1
vikabobkova2010

Исключительно важно использовать язык блок-схем при разработке алгоритма решения задачи. Решение одной и той же задачи может быть реализовано с различных алгоритмов, отличающихся друг от друга как по времени счета и объему вычислений, так и по своей сложности. Запись этих алгоритмов с блок-схем позволяет сравнивать их, выбирать наилучший алгоритм, упрощать, находить и устранять ошибки.

Отказ от языка блок-схем при разработке алгоритма и разработка алгоритма сразу на языке программирования приводит к значительным потерям времени, к выбору неоптимального алгоритма. Поэтому необходимо изначально разработать алгоритм решения задачи на языке блок-схем, после чего алгоритм перевести на язык программирования.

При разработке алгоритма сложной задачи используется метод пошаговой детализации. На первом шаге продумывается общая структура алгоритма без детальной проработки отдельных его частей. Блоки, требующие детализации, обводятся пунктирной линией и на последующих шагах разработки алгоритма продумываются и детализируются.

В процессе разработки алгоритма решения задачи можно выделить следующие этапы:

Этап 1 . Математическое описание решения задачи.

Этап 2 . Определение входных и выходных данных.

Этап 3 . Разработка алгоритма решения задачи.

Объяснение:

ели ели написал

litlenet

1)

s = 0

for k in range(-5,11):

s = s + 2 * k

print(s)

Прогоняются числа [-5;11)

s = 0 + 2 * -5 = -10

s = -10 + 2 * -4 = -18

s = -18 + 2 * -3 = -24

s = -24 + 2 * -2 = -28

s = -28 + 2 * -1 = -30

s = -30 + 2 * 0 = -30

s = -30 + 2 * 1 = -28

s = -28 + 2 * 2 = -24

s = -24 + 2 * 3 = -18

s = -18 + 2 * 4 = -10

s = -10 + 2 * 5 = 0

s = 0 + 2 * 6 = 12

s = 12 + 2 * 7 = 26

s = 26 + 2 * 8 = 42

s = 42 + 2 * 9 = 60

s = 60 + 2 * 10 = 80

ответ: 80

2)

s = 1

for k in range(1,30):

s = (k – 5) * s

print(s)

s = (1 - 5) * 1 = -4

s = (2 - 5) * -4 = 12

s = (3 - 5) * 12 = -24

s = (4 - 5) * -24 = 24

s = (5 - 5) * 24 = 0

s = (6 - 5) * 0 = 0

s = (7 - 5) * 0 = 0

s = (8 - 5) * 0 = 0

s = (9 - 5) * 0 = 0

s = (10 - 5) * 0 = 0

s = (11 - 5) * 0 = 0

s = (12 - 5) * 0 = 0

s = (13 - 5) * 0 = 0

s = (14 - 5) * 0 = 0

s = (15 - 5) * 0 = 0

s = (16 - 5) * 0 = 0

s = (17 - 5) * 0 = 0

s = (18 - 5) * 0 = 0

s = (19 - 5) * 0 = 0

s = (20 - 5) * 0 = 0

s = (21 - 5) * 0 = 0

s = (22 - 5) * 0 = 0

s = (23 - 5) * 0 = 0

s = (24 - 5) * 0 = 0

s = (25 - 5) * 0 = 0

s = (26 - 5) * 0 = 0

s = (27 - 5) * 0 = 0

s = (28 - 5) * 0 = 0

s = (29 - 5) * 0 = 0

ответ: 0

3)

x = 1

while x <= 10:

print(x)

x = x+2

Тут просто. Счетчик идет от одного, а цикл прерывается на 10. Тут никак не может быть четное число. А самое близкое нечетное к 10 - 9.

ответ: 9

4)

x = 1

while x <= 10:

print(x)

x = x + 1

else:

print("Готово")

Тут почти тоже самое. Только тут уже дойдет до 10 и напишет еще "готово"

ответ: 10 Готово.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Внекотором государстве в обращении находятся банкноты определенных номиналов. национальный банк хочет, чтобы банкомат выдавал любую за сумму при минимального числа банкнот, считая, что запас банкнот каждого номинала неограничен. национальному банку решить эту . формат ввода первая строка входных данных содержит натуральное число n не превосходящее 100 — количество номиналов банкнот в обращении. вторая строка входных данных содержит n различных натуральных чисел x1, x2, …, xn, не превосходящих 10 в 6 степени — номиналы банкнот. третья строчка содержит натуральное число s, не превосходящее 10 в 6 степени — сумму, которую необходимо выдать. формат вывода в первую строку выходного файла выведите минимальное число слагаемых (или -1, если такого представления не существует во вторую строку выведите это представление в любом порядке. пример ввод 5 1 3 7 12 32 40 вывод 3 32 7 1
Ваше имя (никнейм)*
Email*
Комментарий*