Problem Description
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
Input
每行只有一个正整数N,N小于32768。
Output
对应每个输入,输出兑换方法数。
Sample Input
2934 12553
Sample Output
718831 13137761-----------------------------------------------------------------------每种钱币是无限的#include<stdio.h> #include<string.h> int main() { int c1[50000],c2[50000]; int n,i,j,k,m; n = 32769; memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); for(i=0;i<=n;i++) c1[i] = 1; for(i=2;i<=3;i++) { for(j=0;j<=n;j++) { for(k=0;k+j<=n;k+=i) c2[j+k] += c1[j]; } for(j=0;j<=n;j++) { c1[j] = c2[j]; c2[j] = 0; } } while(scanf("%d",&m)!=EOF) { printf("%d\n",c1[m]); } return 0; }