Задача разбиения суммы на выдачу минимальным количеством банкнот - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д