在一个国家仅有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 }
// 详见代码
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 }