题目的意思没表达清楚,刚开始还因为是一般的母函数,没有想到还限制使用硬币的数量,坑爹呀,
这道题有两张解法,第一种是直接暴力求解:
#include<stdio.h>
int main()
{
int i,j,k,l,m;
int n,t;
while (scanf("%d",&n)!=EOF)
{
t=0;
for (int i=0;i*50<=n;i++)
for (int j=0;j*25<=n;j++)
for (int k=0;k*10<=n;k++)
for (int l=0;l*5<=n;l++)
for(m=0;m<=100;m++)
if (i*50+j*25+k*10+l*5+m==n&&i+j+k+l+m<=100)
t++;
printf("%d\n",t);
}
}
第二种是母函数的扩展: