Program:
========

using System;
using System.Collections.Generic;

namespace MinimumDenomination
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<int, int> dicOutPut = new Dictionary<int, int>();
            int[] denominations = { 1000, 500, 100, 5 };

            dicOutPut = getMinumumDemonitation(1850, denominations);
           
            foreach (var item in dicOutPut)
            {
                Console.WriteLine("{0} * {1} = {2}", item.Key, item.Value, item.Key * item.Value);
            }
            Console.ReadKey();

        }


        public static Dictionary<int, int> getMinumumDemonitation(int amount, int[] availableNotes)
        {
            Dictionary<int, int> deno = new Dictionary<int, int>();
            foreach (int i in availableNotes)
            {
                int k = i; int count = 0;
                while (k <= amount)
                {
                    count = count + 1;
                    k = i * count;
                }
                if (count > 1 && !deno.ContainsKey(i))
                {
                    deno.Add(i, count - 1);
                    amount = amount - i * (count - 1);
                }
            }
            return deno;
        }
    }
}


output: