设N是一个四位数,它的n倍恰好是其反序数(例如:123的反序数是321),编程,输出一个满足条件的N。 输入描述:输入为一个整数n(2<=n<=9) (10分) 处理:求满足条件的N(30分) 输出描述:输出为一个四位数的整数(10分) 样式输入:9 样式输出:1089 c++
时间: 2024-02-13 12:00:54 浏览: 57
以下是C++代码实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1000; i < 10000; i++) {
int r = i % 10;
int q = i / 10 % 10;
int b = i / 100 % 10;
int s = i / 1000;
int m = r * 1000 + q * 100 + b * 10 + s;
if (i * n == m) {
cout << i << endl;
break;
}
}
return 0;
}
```
思路解析:
我们从 $1000$ 到 $9999$ 枚举 $N$,对于每个 $N$,我们计算其反序数 $M$,判断是否满足 $N \times n = M$ 的条件,如果满足就输出 $N$ 并结束程序。为了计算 $M$,我们可以按照以下步骤:
- 取出 $N$ 的个位数字 $r$;
- 取出 $N$ 的十位数字 $q$;
- 取出 $N$ 的百位数字 $b$;
- 取出 $N$ 的千位数字 $s$;
- 计算 $M = r \times 1000 + q \times 100 + b \times 10 + s$。
这里需要注意的是,我们在枚举 $N$ 的时候,要从 $1000$ 开始,因为题目要求 $N$ 是四位数。另外,我们在判断是否满足条件的时候,可以直接用乘法判断 $N \times n$ 是否等于 $M$,无需将 $M$ 再转换为 $N$ 后再进行比较。
阅读全文