练习2
【日常练习】
面值换算
描述
某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?
输入
无输入
输出
一个数,表示共有多少种换法
输入示例
无
输出示例
不能告知,因为只有一个数,偷偷告诉你小于100
代码演示:
#include <stdio.h>
int main()
{
int n = 100;
int a, b, c, d, times = 0;
for (a = 1; a < 100; a++)
{
for (b = 1; b < 100 / 2; b++)
{
for (c = 1; c < 100 / 5; c++)
{
for (d = 1; d < 100 / 10; d++)
{
if (a + b + c + d == 40 && a + 2 * b + 5 * c + 10 * d == 100)
{
times++;
}
}
}
}
}
printf("%d", times);
return 0;
}
总结
本题考察的是多层循环的使用,有4种类型钞票,那么选择4层循环,只需在最内层的循环判断钞票组合后的值为100,就可以完美解决这个问题。注意控制每一层循环的边界,不要过大,当然如果每个边界都写40,在OJ也可以AC。