profile

Опубликовано 6 лет назад по предмету Информатика от FGSBHsfg

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

Входные данные: Первая строка входных данных содержит натуральное число n, 0<n<=100 (Количество  различных видов номиналов). Вторая строка входных данных содержит n различных натуральных чисел x_{1}, x_{2}, x_{3}...,x_{n} (Значения номиналов банкнот), не превосходящих 1000000. Третья строчка содержит натуральное число S, не превосходящее 5000000 (Сумма, которую нужно выдать)

 Выходные данные: Программа должна найти представление числа S в виде суммы слагаемых из множества {x_{i}}, содержащее минимальное число слагаемых и вывести это представление на экран (в виде последовательности чисел, разделенных пробелами). Если таких представлений существует несколько, то программа должна вывести любое (одно) из них. Если такое представление не существует, то программа должна вывести слово NO

 

Пример:

 

Входные данные:

5

1 3 7 12 32

40

Выходные: 

1 7 32

           

 

Входные:

5

5 10 50 100 500

99

Выходные:

NO

 

Помогите, я уже мозг сломал себе, я не хочу списать Я ХОЧУ ПОНЯТЬ!!!

 

  1. Ответ
    Ответ дан archery
    такой вариант на простом паскале со стратегией жадность

    var
        n, s, i: integer;
        x: array[1..100]of integer;
        answer: string;

    begin
        readln(n);
        for i := 1 to n do
            read(x[i]);
        readln(s);
       
        answer := IntToStr(s) + ' = ';
        for i := n downto 1 do
        begin
            answer := answer + IntToStr(s div x[i]) + '*' + IntToStr(x[i]);
            s := s mod x[i];
            if i > 1 then
                answer := answer + ' + ';
        end;
       
        if s <> 0 then
            writeln('NO')
        else
            writeln(answer);
    end.

    Более полный и правильный вариант решения, но и куда более сложный

    //PascalABC.Net 3.1 сборка 1200
    uses System.Collections.Generic;
    uses System;
    var
        x := new List<integer>;
        c := new List<Tuple<string, integer>>;

    procedure getParcelling(sum, step: integer; coefficients: string; count: integer);
    begin
        if step >= x.Count then begin
            if sum = 0 then c.Add((coefficients, count));
            Exit;
        end;
        if step < 0 then step := 0;
        
        for var j := 0 to (sum div x[step]) do
        begin
            var s := '';
            if j > 0 then begin
                if step > 0 then s += ' + ';
                s += IntToStr(j) + '*' + IntToStr(x[step]);
            end;
            getParcelling(sum - x[step] * j, step + 1, coefficients + s, count + j);
        end;
    end;

    begin
        x := ReadArrInteger('x:', ReadInteger('n =')).ToList;
        var sum := ReadInteger('sum =');
        
        getParcelling(sum, 0, '', 0);
        if c.Count = 0 then
            writeln('No')
        else begin
            var min := c.Min(cc -> cc.Item2);
            Println(c.Where(cc -> cc.Item2 = min));
        end;
    end.
    1. Ответ
      Ответ дан archery
      есть число, надо его представить в виде суммы некоторого набора величин. от большего к меньшему
    2. Ответ
      Ответ дан archery
      школьного уровня информатики я не помню, извини. Потому подупли код несколько раз, а потом задавай конкретные вопросы
    3. Ответ
      Ответ дан FGSBHsfg
      Да мне как раз интересно, как его решать на школьном уровне, простыми кодами: циклами и массивами
    4. Ответ
      Ответ дан archery
      ну так тут как раз и есть циклы и массивы. что именно не так? что тут такого необычного? я чесно не вижу
    5. Ответ
      Ответ дан archery
      http://znanija.com/task/5643189 такой вариант может будет понятнее

Войдите или зарегистрируйтесь, чтобы добавить ответ или свой вопрос на сайт


Другие вопросы
Шалаш
Другие предметы - 1 год назад

Пытался написать сочинение по егэ по русскому не могу понять как,написать хотелось бы пример увидеть по этому тексту. (1)в солнечный день я приехал в старинный посёлок гусь-железный полюбоваться на озеро, искупаться, поплавать в нём. (2)доехал до речки, поднялся на бугор, глянул и... (3)о ужас! (4)нет озера. (5)по широкой впадине, окаймлённой дальней опушкой бывшего прибрежного леса, текла, извиваясь, узкая, местами пересыхающая речушка. (6)и старинной плотины, высокой, кирпичной, с чугунными шлюзами, в тёмных казематах которой, по преданию, разбойная братия чеканила фальшивые деньги, тоже не было. (7)шлюзы, регулировавшие сток, убрали, засыпали – и затянуло озеро тиной да ряской. (8)на месте этом проходила теперь обыкновенная дорожная насыпь; дорога делала крутой поворот, огибала белый двухэтажный барский дом, похожий на длинную казарму, заломанный чахлый парк и снова вырывалась на простор. (9)главный врач детского санатория, размещённого в барском доме, показал мне давние фотографии этого исчезнувшего озера, высокой кирпичной плотины, торговых рядов с доисторическими портиками, он водил по внутренним покоям огромного дома, заново перегороженного, приспособленного для иных надобностей. (10)переделка и ремонт когда-то выполнены были наспех: половицы скрипят и хлябают под ногами, двери перекошены, в оконные рамы задувает свежий ветерок. – (11)сохранилась хоть одна комната от давнего времени? – спросил я. – (12)с полами, дверями и окнами? – (13)полы, двери и прочее – всё порастащили. (14)а вот стены и потолок сохранились в одном месте. (15)идёмте, покажу. (16)он ввёл меня в зал, кажется, в теперешнюю столовую, с белыми строгими пилястрами, с лепным потолком. – (17)полы здесь были, говорят, из наборного паркета, двери из орехового дерева с бронзовой инкрустацией, люстра позолоченная висела. – (18)жалко, – говорю, – что не сохранилось всё это. – (19)о чём жалеть? (20)архитектурной ценности этот дом не имеет, – сказал доктор. (21)я взглянул на него с удивлением. (22)не шутит ли? (23)нет, смотрит прямо в глаза, даже с каким-то вызовом. (24)задиристый хохолок на лысеющем лбу топорщится, как петушиный гребешок. – (25)как не имеет ценности? – говорю. – (26)это ж дом! (27)большой, крепкий, красивый, полный когда-то дорогого убранства. – (28)барские покои, и больше ничего. (29)таких в россии тысячи. – (30)так ведь и народу нашему пригодились бы такие покои. – (31)людям нашим нужны другие ценности. (32)вы ещё храм пожалейте. (33)теперь это модно. – (34)а что, не жаль храма? – (35)и храм цены не имеет. (36)архитектура путаная. (37)специалисты приезжали, говорят – эклектика. (38)потом, правда, всё-таки восстановили храм этот. – (39)и парка не жаль? – (40)парк – природа, и больше ничего. (41)в одном месте убавилось, в другом прибавилось. (42)в любую минуту его насадить можно. (43)мы стояли возле окна, внизу под нами раскинулся обширный посёлок. – (44)смотрите, – говорю, – сколько домов. (45)приличные дома, большинство новых. – (46)здесь живёт в основном торговый люд, кто чем торгует, работы хватает. – (47)вот и хорошо, – говорю. – (48)увеличился посёлок за полвека? – (49)увеличился. – (50)а теперь подумайте вот о чём: раньше, ну хоть ещё в тридцатые годы, здесь меньше жило народу, но успевали не только свои рабочие дела делать. (51)ещё и плотину чинили, озеро в берегах держали и парк обихаживали. (52)а теперь что ж, времени на это не хватает или желания нет? – (53)а это, – говорит, – знакомый мотив. (54)это всё ваше писательское ворчание. (55)что озеро спустили – это вы заметили. (56)что над каждой крышей телевизионная тарелка поставлена – этого вы не замечаете. (57)спорить с ним трудно, почти невозможно: доводы ваши он не слушает, только глаза навострит, тряхнёт головой и чешет без запинки, как будто доклад читает… – (58)есть писатели-патриоты. (59)их книги читают, фильмы по книжкам их смотрят наравне с футболом и хоккеем, потому что яркие, незабываемые образы. (60)а есть писатели-ворчуны, которые всем недовольны. (61)и всё им что-то надо. (62)вот одного такого лечили, а он нас же, медиков, опозорил в своём последнем сочинении. (63)за что, спрашивается? (64)да, не раз вспомянешь в дальней дороге бессмертного писателя земли русской николая васильевича гоголя: «россия такая уж страна – стоит высмеять одного околоточного надзирателя, как вся полиция обидится».