硬币组合

时间: 1ms        内存:128M

描述:

假设一堆由1分、2分、5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量可以为0)。

输入:

输入数据第一行有一个正整数T,表示有T组测试数据;      
接下来的T行,每行有两个数n,m,n和m的含义同上。

输出:

对于每组测试数据,请输出可能的组合方式数;     
每组输出占一行。

示例输入:

1
5 9

示例输出:

2

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
int main()
{
    int m,n,x,s,c,i,j;
    scanf("%d",&x);
    while(x--)
    {
        c=0;
        scanf("%d%d",&n,&m);
        s=5*n-m;
        for(i=0;i<=n;i++)
        {
            for(j=0;j<=n;j++)
            {
                if(4*i+3*j==s && n-i-j>=0)
                    c++;
            }
        }
        printf("%d\n",c);
    }
    return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
int main()
{
    int m,n,x,s,c,i,j;
    scanf("%d",&x);
    while(x--)
    {
        c=0;
        scanf("%d%d",&n,&m);
        s=5*n-m;
        for(i=0;i<=n;i++)
        {
            for(j=0;j<=n;j++)
            {
                if(4*i+3*j==s && n-i-j>=0)
                    c++;
            }
        }
        printf("%d\n",c);
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。