钱币兑换问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8597 Accepted Submission(s): 5169
Problem Description
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
Input
每行只有一个正整数N,N小于32768。
Output
对应每个输入,输出兑换方法数。
Sample Input
2934 12553
Sample Output
718831 13137761
#include<iostream>
using namespace std;
int main()
{
int n;
int s = 0;
int i, two, three;
while (cin >> n)
{
three = n / 3;//找出3分钱最多的数量
for (i = 0; i <= three; i++)
{
s = s + (n - i * 3) / 2 + 1
/*(n - i * 3)用总的钱减去三分钱占的量,再处以2求出2分钱最多的数量,同时这个数本质上
也是2分钱拿的方式的情况总和,例如(n - i * 3)=5,那么2分钱就可以拿1枚,2枚。。。5枚*/
/*加一是考虑到了,只拿3分钱和1分钱的情况*/;
}
cout << s << endl;
}
return 0;
}