Write a C program to input amount from user and print minimum number of notes (Rs. 500, 100, 50, 20, 10, 5, 2, 1) required for the amount. How to the minimum number of notes required for the given amount in C programming. Program to find minimum number of notes required for the given denomination. Logic to find minimum number of denomination for a given amount in C program.

**Example**

**Input**

Input amount: 575

**Output**

Total number of notes: 500: 1 100: 0 50: 1 20: 1 10: 0 5: 1 2: 0 1: 0

## Required knowledge

Basic C programming, Relational operators, If else

## Logic to count minimum number of denomination for given amount

There any many optimal algorithms to solve the given problem. For this exercise to make things simple I have used greedy algorithm.

Step by step descriptive logic to find minimum number of denomination.

- Input amount from user. Store it in some variable say
`amt`. - If amount is greater than
`500`then, divide amount by`500`to get maximum`500`notes required. Store the division result in some variable say`note500 = amt / 500;`

.After division, subtract the resultant amount of

`500`notes from original amount. Perform`amt = amt - (note500 * 500)`

. - Repeat above step, for each note 200, 100, 50, 20, 10, 5, 2 and 1.

## Program to count minimum number of denomination for given amount

```
/**
* C program to count minimum number of notes in an amount
*/
#include <stdio.h>
int main()
{
int amount;
int note500, note100, note50, note20, note10, note5, note2, note1;
/* Initialize all notes to 0 */
note500 = note100 = note50 = note20 = note10 = note5 = note2 = note1 = 0;
/* Input amount from user */
printf("Enter amount: ");
scanf("%d", &amount);
if(amount >= 500)
{
note500 = amount/500;
amount -= note500 * 500;
}
if(amount >= 100)
{
note100 = amount/100;
amount -= note100 * 100;
}
if(amount >= 50)
{
note50 = amount/50;
amount -= note50 * 50;
}
if(amount >= 20)
{
note20 = amount/20;
amount -= note20 * 20;
}
if(amount >= 10)
{
note10 = amount/10;
amount -= note10 * 10;
}
if(amount >= 5)
{
note5 = amount/5;
amount -= note5 * 5;
}
if(amount >= 2)
{
note2 = amount /2;
amount -= note2 * 2;
}
if(amount >= 1)
{
note1 = amount;
}
/* Print required notes */
printf("Total number of notes = \n");
printf("500 = %d\n", note500);
printf("100 = %d\n", note100);
printf("50 = %d\n", note50);
printf("20 = %d\n", note20);
printf("10 = %d\n", note10);
printf("5 = %d\n", note5);
printf("2 = %d\n", note2);
printf("1 = %d\n", note1);
return 0;
}
```

In above program, I have used shorthand assignment operator. The statement `amount -= note500 * 500;`

is equivalent to `amount = amount - (note500 * 500);`

.

Output

Enter amount: 4673 Total number of notes = 500 = 9 100 = 1 50 = 1 20 = 1 10 = 0 5 = 0 2 = 1 1 = 1

Happy coding 😉

### Recommended posts

- If else programming exercises index.
- C program to check a triangle is valid or not it its sides are given.
- C program to check whether a triangle is valid or not if its angles are given.
- C program to check Equilateral, Scalene or Isosceles triangle.
- C program to find all roots of a quadratic equation.
- C program to find profit or loss.