同样求指定数的钱的划分方法~
输出的时候需要注意,如果答案为1的话需要特殊输出
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=30010;
int n,num[5]={1,5,10,25,50};
long long f[maxn];
void Init()
{
f[0]=1;
for(int i=0;i<5;i++)
for(int j=num[i];j<maxn;j++)
f[j]+=f[j-num[i]];
}
int main()
{
Init();
while(scanf("%d",&n)!=EOF)
{
if(f[n]==1)
printf("There is only %lld way to produce %d cents change.\n",f[n],n);
else
printf("There are %lld ways to produce %d cents change.\n",f[n],n);
}
return 0;
}