在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
2934 12553
718831 13137761
母函数,已知每一项相乘的权值增长规律,求得当幂为N的值,可以预处理一下:
#include <iostream>
#include <cstring>
using namespace std;
const int maxn=32769;
int c1[maxn],c2[maxn];
void ini()
{
for(int i=0;i<maxn;i++){
c1[i]=1;
c2[i]=0;
}
for(int i=2;i<=3;i++){
for(int j=0;j<maxn;j++)//左边
for(int k=0;k+j<maxn;k+=i)//右边
c2[k+j]+=c1[j];
for(int j=0;j<maxn;j++){
c1[j]=c2[j];
c2[j]=0;
}
}
}
int main()
{
int n;
ini();
while(cin>>n){
cout<<c1[n]<<endl;
}
return 0;
}