C++编写1-99之间的同构数
时间: 2024-12-15 18:18:01 浏览: 9
在C++中,同构数是指可以按照数字顺序替换组成另一个数字的两个或多个整数。例如,162 = 2 * 81,所以1和62互为同构数。下面是一个简单的C++函数,用于找出1到99之间所有的同构数对:
```cpp
#include <vector>
#include <set>
std::pair<int, int> findIsomorphicPairs(int n) {
std::vector<std::pair<int, int>> pairs;
for (int i = 1; i <= n; ++i) {
for (int j = i + 1; j <= n; ++j) {
if (std::to_string(i) == std::string(std::stoi(std::to_string(j), nullptr, '0'))) {
// 检查字符串是否完全相同,避免重复(如162和61)
if (std::string(std::to_string(j)) != std::string(std::to_string(i))) {
pairs.push_back({i, j});
}
}
}
}
return pairs;
}
int main() {
std::vector<std::pair<int, int>> isomorphicPairs = findIsomorphicPairs(99);
for (const auto& pair : isomorphicPairs) {
std::cout << "Pair {" << pair.first << ", " << pair.second << "}\n";
}
return 0;
}
```
这个程序首先创建一个空的`pairs`集合,然后遍历1到n的所有整数对。对于每个对,检查它们的字符串表示是否相同。如果相同,添加到结果集中。注意这里我们还排除了重复的情况,如1和61。
阅读全文