3962 - 15 找零钱

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

将大面值的钱兑换成5元、2元、1元、5角的零钞

要求零钞总数不超过40张且每种至少1张,求所有兑换方案数

题目输入

输入50或者100,表示50元或者100元

题目输出

输出对应面值的所有兑换方案数

输入/输出样例

输入格式

50

输出格式

668

C语言解答

#include<stdio.h>
int main()
{
    int n,x,y,z,m,i=0,a;
    scanf("%d",&n);
    for(x=0;x<=20;x++)
    {
        for(y=0;y<=(n-x*5)/2;y++)
        {
            for(z=0;z<=n-x*5+y*2;z++)
            {
                for(m=0;m<=(40-(x+y+z));m++)
                {
                    if(m%2==0)
                    {
                        a=m/2;
                        if((x*5+y*2+z*1+a==n)&&(x+y+z+m<=40)&&(x>=1&&y>=1&&z>=1&&m>=1))

                                  {i+=1;}


                    }

                }
            }
        }
    }
    printf("%d",i);
    return 0;
}

C++解答

#include<stdio.h>
int main()
{    
        int m,n=0,a,b,c,d;
	scanf("%d",&m);
	for(a=1;a<=m/5;a++)
	   for(b=1;b<=m/2;b++)
		   for(c=1;c<=m;c++)
			   for(d=1;d<=2*m;d++)
			   {if(5*a+2*b+c+0.5*d==m&&a+b+c+d<=40)
			   n++;}
     printf("%d\n",n);
	return 0;
}