用C++写设N是一个四位数,它的n倍恰好是其反序数(例如:123的反序数是321),编程,输出一个满足条件的N。 输入描述:输入为一个整数n(2<=n<=9) (10分) 处理:求满足条件的N(30分) 输出描述:输出为一个四位数的整数(10分) 样式输入:9 样式输出:1089 的程序
时间: 2024-02-13 14:00:33 浏览: 74
以下是 C++ 的实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1000; i < 10000; i++) {
if(i * n == stoi(string(to_string(i).rbegin(), to_string(i).rend()))) {
cout << i << endl;
break;
}
}
return 0;
}
```
当输入为9时,输出为1089。
相关问题
用C++写1、四位反序数(50分) 题目描述:设N是一个四位数,它的n倍恰好是其反序数(例如:123的反序数是321),编程,输出一个满足条件的N。 输入描述:输入为一个整数n(2<=n<=9) (10分) 处理:求满足条件的N(30分) 输出描述:输出为一个四位数的整数(10分) 样式输入:9 样式输出:1089 的程序
以下是使用C++写的程序:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1000; i < 10000; i++) {
int j = i * n;
if (j >= 10000) continue; // j是5位数或以上,不符合要求
int k = (j % 10) * 1000 + (j / 10 % 10) * 100 + (j / 100 % 10) * 10 + j / 1000;
if (k == i) {
cout << i << endl;
break;
}
}
return 0;
}
```
思路:从 1000 到 9999 枚举 N,计算它的反序数,如果等于 N 乘以 n,就输出 N 并结束程序。其中,计算反序数的方法是将 j 的个位数乘以 1000,十位数乘以 100,百位数乘以 10,千位数不变,然后相加。如果 j 是 5 位数或以上,就不符合要求,跳过此次循环。
设N是一个四位数,它的n倍恰好是其反序数(例如:123的反序数是321),编程,输出一个满足条件的N。 输入描述:输入为一个整数n(2<=n<=9) (10分) 处理:求满足条件的N(30分) 输出描述:输出为一个四位数的整数(10分) 样式输入:9 样式输出:1089 c++
以下是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$ 后再进行比较。
阅读全文