Есть ответ 👍

Вpascalabc.net. задана сумма денег в купюрах n. провести размен монетами, если в кассе есть n1 - штук по рублю, n2-штук по 2 рубля, n5-штук по 5 рублей, n10 - штук по 10 рублей

180
260
Посмотреть ответы 2

Ответы на вопрос:

nikk72827
4,5(4 оценок)

"жадный" алгоритм // pascalabc.net 3.2, сборка 1417 от 28.03.2017 // внимание! если программа не работает, обновите версию! begin   var k: =arr(1,2,5,10); // номиналы монет   var m: =readarrinteger('кол-во монет по '+k.joinintostring+' руб: ',4);   var n: =readinteger('сумма в купюрах, руб: ');   if m.zip(k,(p,q)-> p*q).sum< n then begin // нехватка монет       writeln('размен невозможен'); exit       end;   var s: =''; // для результатов   for var i: =k.length-1 downto 0 do       if (n> =k[i]) and (m[i]> 0) then begin // номинал участвует           var t: =min(n div k[i],m[i]); // кол-во монет           n: =n-k[i]*t; // остаток           if s.length> 0 then s+=', ';           s+=t+' по '+k[i]+' руб.';           end;   if n< > 0 then writeln('размен невозможен')   else writeln(s) end. примеры кол-во монет по 1 2 5 10 руб: 350 215 86 130 сумма в купюрах, руб: 1526 130 по 10 руб., 45 по 5 руб., 1 по 1 руб. кол-во монет по 1 2 5 10 руб: 500 146 0 38 сумма в купюрах, руб: 432 38 по 10 руб., 26 по 2 руб. кол-во монет по 1 2 5 10 руб: 10 20 30 40 сумма в купюрах, руб: 25000 размен невозможен
diarryfokks
4,4(34 оценок)

Class primes{   public static void main(string args[]){   boolean noprimes = true;   java.util.scanner in = new java.util.scanner(system.in);   searchprimes:   for(int k = in. n = in.nextint(); k> =n; {     for(int p = k/2; p> 1; (k%p==0)continue searchprimes;     system.out.print(k+" "); noprimes = false;   }   if(noprimes)system.out.println("0");   } }

Популярно: Информатика