本文主要是介绍问题 1821: [蓝桥杯][2014年第五届真题]拼接平方数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题 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;
}
这篇关于问题 1821: [蓝桥杯][2014年第五届真题]拼接平方数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!