钞票换硬币。把 1 元钞票换成 1分、2 分、5 分硬币(每种至少一枚),有哪些换法在100~999 之间的自然数中,找出能被 3 整除,且至少有一位数字为 5 的所有7-4数,并统计个数。枚举c++
时间: 2024-02-18 14:03:28 浏览: 81
这是一道比较综合的数学问题。可以使用嵌套循环枚举所有的换法,并判断是否满足条件。
以下是解决这个问题的C++代码,注释中有详细的说明:
```c++
#include <iostream>
using namespace std;
int main() {
int count = 0; //符合条件的数的个数
for (int i = 100; i <= 999; ++i) { //枚举100~999之间的所有自然数
int sum = 0; //硬币的面值总和
for (int j = 1; j <= 5; ++j) { //枚举1分、2分、5分硬币的个数
for (int k = 1; k <= 5; ++k) {
for (int l = 1; l <= 5; ++l) {
sum = j + k * 2 + l * 5; //计算硬币的面值总和
if (sum == i) { //如果面值总和等于原来的钞票面额
if (i % 3 == 0 && (i % 10 == 5 || (i / 10) % 10 == 5 || i / 100 == 5)) {
//如果能被3整除且至少有一位数字为5
cout << i << endl; //输出符合条件的数
++count; //统计符合条件的数的个数
}
}
}
}
}
}
cout << "count: " << count << endl; //输出符合条件的数的个数
return 0;
}
```
需要注意的是,题目中要求至少有一枚硬币,所以在枚举硬币个数时,需要从1开始枚举。
阅读全文