题目描述
把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,计算结果又等于原数。
(30+25)*(30+25)=55*55=3025,这样的数叫“雷劈数”。
求所有符合这样条件的四位数。 (ab+cd)*(ab+cd)=abcd
输入
无
输出
若干行,每行一个雷劈数,从小到大输出。
代码如下:
#include<bits/stdc++.h>
bool isThunderboltNumber(int number) {
// 提取ab和cd
int ab = number / 100;
int cd = number % 100;
// 计算(ab + cd)的平方
int sum = ab + cd;
int square = sum * sum;
// 检查是否等于原数
return square == number;
}
int main() {
// 遍历所有四位数
for (int i = 1000; i <= 9999; ++i) {
if (isThunderboltNumber(i)) {
std::cout << i << " " ;
}
}
return 0;
}