洛谷P1151c++
时间: 2023-11-03 09:57:18 浏览: 142
洛谷P1422解答(C++)
洛谷P1151c是一道编程题目,要求编写程序找出100到999之间所有满足以下条件的数:
1. 个位数、十位数和百位数互不相等;
2. 个位数、十位数和百位数都是水仙花数的因数;
3. 个位数、十位数和百位数的立方和等于该数本身。
以下是一种可能的解答方法:
```c++
#include <iostream>
#include <vector>
using namespace std;
bool isArmstrong(int n) {
int sum = 0;
int temp = n;
while (temp != 0) {
int digit = temp % 10;
sum += (digit * digit * digit);
temp /= 10;
}
return sum == n;
}
int main() {
vector<int> result;
for (int i = 100; i <= 999; i++) {
int digit1 = i % 10;
int digit2 = (i / 10) % 10;
int digit3 = (i / 100) % 10;
if (digit1 != digit2 && digit2 != digit3 && digit1 != digit3) {
if (isArmstrong(digit1) && isArmstrong(digit2) && isArmstrong(digit3)) {
if (digit1 * digit2 * digit3 != 0 && i % (digit1 * digit2 * digit3) == 0) {
result.push_back(i);
}
}
}
}
if (result.empty()) {
cout << "No numbers found." << endl;
} else {
for (int num : result) {
cout << num << endl;
}
}
return 0;
}
```
阅读全文