Задача разбиения суммы на выдачу минимальным количеством банкнот - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо определить, как заданную сумму денег выразить минимальным количеством банкнот по 500, 100, 10, 5, 2 и 1 рублю.
 static void Main(string[] args)
        {
            Int64 summa = 0, b500 = 0, b100 = 0, b10 = 0, b5 = 0,b2=0, b1 = 0;
            Console.WriteLine("Введите сумма денег для расчета");
            summa = Convert.ToInt64(Console.ReadLine());
           do
           { 
               if (summa % 500 >= 1)
                    {
                    summa = summa - 500;
                    b500++;
                    }    
                            else if (summa % 100 >= 1)
                                        {
                                            summa = summa - 100;
                                            b100++;
                                                }
                                                else if (summa % 10 >= 1)
                                                               {
                                                                summa = summa - 10;
                                                                b10++;
                                                                }
                                                                else if (summa % 5 >= 1)
                                                                            {
                                                                              summa = summa - 5;
                                                                              b5++;
                                                                             }
                                                                                else if (summa % 2 >= 1)
                                                                                            {
                                                                                             summa = summa - 2;
                                                                                             b2++;
                                                                                             }
                                                                                                else
                                                                                                        {
                                                                                                        b1 = summa;
                                                                                                        summa = 0;
                                                                                                           }

           }
           
while(b1>=1);
 Console.WriteLine("Количество купюр для выдачи суммы {0} пятисоток, {1} соток, {2} десяток, {3} пятерок, {4} двоек и {5} единичных банкнот", b500,b100,b10,b5,b2,b1);
            Console.ReadLine();} 
    }
почему цикл не верно работает?!(
собственно меня смущает тот факт что выход происходит по while(b1>0) когда b1 равно 0

Решение задачи: «Задача разбиения суммы на выдачу минимальным количеством банкнот»

textual
Листинг программы
foreach (int item in FaceValues)
{
  if (sum / item == 0) continue;
  Dic.Add(item, sum/item );
  sum %= item; 
  if (sum == 0) break;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы