逖靖寒的世界

每天进步一点点

导航

某公司定制培训班笔试最后一题解题思路和解题代码

 

题目描述

3种面额的硬币:1分,2分和5分的。现在有100枚这样的硬币,面额总和是2.47元,求共有多少种可能,且1分,2分和5分的硬币各有多少。

解题思路:

假设1分,2分和5分的硬币个数分别是x,y,z个。

则有:

x + y + z =100

x+2y+5z=247

可得:

X = 3z – 47

Y = 147-4z

又知道

x >= 0

y>=0

z>=0

5z<=247

可得:

16<=z<=36

问题得解。

问题的证明:

c#代码实现,并输出每种解的值。

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            int num = CaluSovNum();

        }

        private static int CaluSovNum()

        {

            int x, y, z;

            int num = 0;

            for (z = 16; z <= 36; z++)

            {

                x = 3 * z - 47;

                y = 147 - 4 * z;

                if (x <0 || y <0 || x + y + z != 100 || x + 2 * y + 5 * z != 247)

                {

                    throw new Exception("Error");

                }

                num++;

                Console.WriteLine("1分钱的硬币个数是{0}, 2分钱的硬币个数是{1}, 5分钱的硬币个数是{2}",

                    x, y, z);

            }

            return num;

        }

    }

}

posted on 2007-12-19 12:28  逖靖寒  阅读(1429)  评论(9编辑  收藏  举报