手柄君的小阁

个人私货聚集地

蓝桥杯(大专组) 校内训练 1005.钱币兑换问题

本文最后更新于 2018 年 5 月 10 日,其中的内容可能有所发展或发生改变,敬请注意。

1005.钱币兑换问题

时长限制: 5000 MS
内存限制: 262144 KB

描述

将10000块钱兑换成由5000块、2000块、1000块、500块、100块、50块、10块、5块、1块的组成的零钱,问有多少种兑换方式?

输入

无输入

输出

运算结果。

样例输出中的结果不正确,只是格式提示

示例输入

无输入

示例输出

13456789

解题思路

暴力嵌套循环,每一层子循环找一个变量记录已经被兑换好的钱数,因为醉了内层循环兑换为1元,故兑换方式直接+=剩余钱数

Ac源码(C/C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
 
int main()
{
	int amountSet[9] = { 5000,2000,1000,500,100,50,10,5,1 };
	int counterSet[9];
	int sumSet[9] = { 0 };
	int maxCounterSet[9] = { 0 };
	long long count = 0;
	maxCounterSet[0] = 2;
	for (counterSet[0] = 0; counterSet[0] <= maxCounterSet[0]; counterSet[0]++) {
		sumSet[0] = counterSet[0] * amountSet[0];
		maxCounterSet[1] = (10000 - sumSet[0]) / amountSet[1];
		for (counterSet[1] = 0; counterSet[1] <= maxCounterSet[1]; counterSet[1]++) {
			sumSet[1] = sumSet[0] + counterSet[1] * amountSet[1];
			maxCounterSet[2] = (10000 - sumSet[1]) / amountSet[2];
			for (counterSet[2] = 0; counterSet[2] <= maxCounterSet[2]; counterSet[2]++) {
				sumSet[2] = sumSet[1] + counterSet[2] * amountSet[2];
				maxCounterSet[3] = (10000 - sumSet[2]) / amountSet[3];
				for (counterSet[3] = 0; counterSet[3] <= maxCounterSet[3]; counterSet[3]++) {
					sumSet[3] = sumSet[2] + counterSet[3] * amountSet[3];
					maxCounterSet[4] = (10000 - sumSet[3]) / amountSet[4];
					for (counterSet[4] = 0; counterSet[4] <= maxCounterSet[4]; counterSet[4]++) {
						sumSet[4] = sumSet[3] + counterSet[4] * amountSet[4];
						maxCounterSet[5] = (10000 - sumSet[4]) / amountSet[5];
						for (counterSet[5] = 0; counterSet[5] <= maxCounterSet[5]; counterSet[5]++) {
							sumSet[5] = sumSet[4] + counterSet[5] * amountSet[5];
							maxCounterSet[6] = (10000 - sumSet[5]) / amountSet[6];
							for (counterSet[6] = 0; counterSet[6] <= maxCounterSet[6]; counterSet[6]++) {
								sumSet[6] = sumSet[5] + counterSet[6] * amountSet[6];
								maxCounterSet[7] = (10000 - sumSet[6]) / amountSet[7];
								count += maxCounterSet[7] + 1;
							}
						}
					}
				}
			}
		}
	}
	printf("%lld",count);
	int a;
	scanf("%d", &a);
    return 0;
}
  1. 头像 nameetc说道:

    未来学动归就不用这么折磨自己了(^_^)

    1. 头像 Pt的马甲说道:

      那么为啥非要用c写呢

  2. 头像 小吴说道:

    只是你的站得头像我不知道你怎么弄的,如果有gravatar头像就使用v2ex,如果没有就使用本地的头像,v2ex的连接直接就都不出现。。好神奇 而且有2个账号的头像还是本地不一样的头像。。好神奇

  3. 头像 小吴说道:

    请问贵站的头像是如何处理的?我看到有的是本地的 有的是调用的cdn.v2ex.com这个镜像,我折腾半天把头像地址改成了这个,但是https://cdn.v2ex.com/avatar 不知道我博客哪里代码固定了avatar这个命名,始终不行,另外请教https的问题,你的站https全是绿色,可是我的在火狐正常,在谷歌下面怎么都不是绿色,求解。感谢,最好能加个Q

    1. Pt Pt说道:

      内个cdn.v2ex.com/avatar是v2ex的gravatar反代 免费给大家使用的 如果你使用的插件之类的不行那就修改插件
      至于不绿的问题 chrome的console里会显示原因的

    2. Pt Pt说道:

      还有你的站 chrome访问直接下载了个gz文件…

      1. 头像 小吴说道:

        有吗?绿标已经解决了,正在解决头像,头像镜像也替换成功了,现在是做本地缓存头像。
        我本机和服务器上用chrome访问都没出现下载的问题,你居然弹出下载。。。无语,不知道你什么情况

        1. Pt Pt说道:

          移动端没问题 PC端用啥浏览器都弹出下载 你disable cache或者隐身模式测试下吧

        2. Pt Pt说道:

          找了某个群里的人 PC端访问都会弹出下载

来一发吐槽