8P

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

Input

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

Output

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

Sample Input

2934
12553

Sample Output

718831
13137761

// 第一层循环:控制3分硬币的个数;第二层循环:控制2分硬币的个数;若此时总值未超过N,计数器+1
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n, c, i, j;
 5     while(~scanf("%d", &n))
 6     {
 7         c=0;
 8         for(i=0;i<=n/3;i++)
 9             for(j=0;j<=n/2;j++)
10             {
11                 if(n-3*i-2*j>=0)
12                     c++;
13                 else break;
14             }
15         printf("%d
", c);
16     }
17     return 0;
18 }
Time Limit Exceeded
// 详见代码
 1 #include<stdio.h>
 2 // 3分钱,2取种,1补值. 
 3 int main()
 4 {
 5     int n, c, i;
 6     while(~scanf("%d", &n)) // n=x1+2*x2+3*x3.
 7     {
 8         c=n/3+1;            // 全用1分兑换 +1. 每3=1+2 +1,不够1分凑. 
 9         for(i=0;i<=n/3;i++)
10             c+=(n-3*i)/2;    // 先用3分兑换部分,剩下的每2=1+1 +1,不够1分凑. 
11         printf("%d
", c);
12     }
13     return 0;
14 }
AC
原文地址:https://www.cnblogs.com/goldenretriever/p/10355719.html