c++给定一个正四位数,若这个四位数与它倒着写的差(大减小)为完全平方数,则输出他
时间: 2024-03-17 19:45:40 浏览: 97
可以使用暴力枚举的方法进行求解,具体代码如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPerfectSquare(int num) {
int x = sqrt(num);
return x * x == num;
}
int main() {
int n;
cin >> n;
for(int i = n; i >= 1000; i--) {
int diff = i - (i % 10) * 1000 / 10 - (i % 100 / 10) * 100 + (i / 1000);
if(isPerfectSquare(diff)) {
cout << i << endl;
break;
}
}
return 0;
}
```
在代码中,我们首先读入一个正四位数 n,然后从 n 开始向下枚举,直到 1000 为止。对于每个数 i,我们计算出它与它倒着写的差 diff,其中 (i % 10) * 1000 / 10 是 i 的个位数字,(i % 100 / 10) * 100 是 i 的十位数字,i / 1000 是 i 的千位数字,然后将它们组合起来即可得到倒着写的数。
接下来,我们判断 diff 是否为完全平方数。如果是,则输出 i 并结束循环。
最后,注意在进行计算时,需要将 diff 定义为 int 类型,避免计算过程中出现 overflow。
阅读全文