C++ 中的强大整数
假设我们有三个整数 'a'、'b' 和 'limit'。任务是在 [a, limit] 范围内打印数字。这些数字的列表被称为强大整数,表示为:
a^i + b^j 其中 i >= 0 且 j >= 0
例如
输入-1
a = 2
b = 5
limit = 10
输出
[2, 3, 4, 5, 6, 7, 9]
说明:对于每个 i 和 j,
2^0 + 5^0 = 2 , 2^0 + 5^1= 6
2^1 + 5^0 = 3 , 2^1 + 5^1= 7
2^2 + 5^0 =5 , 2^3 + 5^0= 9
解决此问题的方法
解决此特定问题的蛮力方法是,我们将使用两个嵌套循环并迭代到限制。然后,我们将找到上界中每个指数的两个数字的总和,并将结果数字插入列表中。
- 取三个数字 'a'、'b' 和 'limit'。
- 函数 powerfulnumbers(int a, int b, int limit) 将数字 'a'、'b' 和 'limit' 作为输入。该函数返回所有强大数字的列表,使得 a^i + b^j 其中 i >= 0 且 j >= 0。
- 取两个嵌套循环,范围到限制,并且每次通过与其索引相乘来查找强大数字。
- 如果数字位于 [a, limit] 范围内,则将该数字存储在集合中(以避免数字重复)。
- 迭代集合并打印输出。
示例
#include <bits/stdc++.h>
using namespace std;
void powerfulNum(int a, int b, int limit) {
set < int > s;
for (int i = 1; i < limit; i *= a) {
for (int j = 1; j < limit; j *= b) {
if (i + j <= limit) {
s.insert(i + j);
} else break;
if (b == 1) break;
}
if (a == 1) break;
}
for (auto it: s) {
cout << it << " ";
}
}
int main() {
int a = 2;
int b = 5;
int limit = 10;
powerfulNum(a, b, limit);
return 0;
}运行以上代码将生成以下输出:
输出
2 3 5 6 7 9
这里,范围为 2 到 10 的所有强大数字为 [2, 3, 4, 6, 7, 9]。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP