问题 1821: [蓝桥杯][2014年第五届真题]拼接平方数
时间限制: 1Sec 内存限制: 128MB 提交: 175 解决: 72
题目描述
小明发现49很有趣,首先,它是个平方数。它可以拆分为4和9,拆分出来的部分也是平方数。169也有这个性质,我们权且称它们为:拼接平方数。
100可拆分1 00,这有点勉强,我们规定,0 00 000 等都不算平方数。
小明想:还有哪些数字是这样的呢?
你的任务出现了:找到某个区间的所有拼接平方数。
输入
两个正整数 a b (a<b<10^6)
输出
若干行,每行一个正整数。表示所有的区间[a,b]中的拼接平方数
样例输入
1 200
样例输出
49 169
#include <iostream>
#include <map>
using namespace std;
map <long long, bool>squ;
bool check(int n) {
int k = 10;
while( n/k ){
if (squ[n/k] && squ[n%k]) //拆
return 1;
k *= 10;
}
return 0;
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= 1010; i++) //保存平方数
squ[i*i] = 1;
for (int i = n; i <= m; i++) {
if (squ[i] && check(i)) //检测
cout << i << endl;
}
return 0;
}
扫描二维码关注公众号,回复:
8915984 查看本文章