Problem Description

在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。

Input

每行只有一个正整数N,N小于32768。

Output

对应每个输入,输出兑换方法数。

Sample Input

2934
12553

Sample Output

718831
13137761

Author

SmallBeer(CML)

Source

杭电ACM集训队训练赛(VII)
 1 #include <iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 
 8 int dp[33005];
 9 
10 int main()
11 {
12     int i,j,n;
13     memset(dp,0,sizeof(dp));
14     dp[0]=1;
15     for(i=1;i<=3;i++)//3种钱币
16         for(j=i;j<=33000;j++)//完全背包 顺序
17             dp[j]+=dp[j-i];
18     while(~scanf("%d",&n))
19     {
20         printf("%d\n",dp[n]);
21     }
22     return 0;
23 }