老师我晕课10


私信TA

用户名:1710819010

访问量:11203

签 名:

最后一次

等  级
排  名 490
经  验 4642
参赛次数 7
文章发表 16
年  龄 0
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

非常非常菜的菜鸡

解题思路:
                使用map容器保存平方数,然后拆分数字,判断是否为平方数。

                例如1681,,我们只需要判断数字是否能拆成两个平方数。

                1 and 681  不为平方数   

                16 and 81 均为平方数  成立 

                又例如1444

                1 and 444不成立

                14 and  44 不成立

                 144  and  4 成立 
注意事项:
        
参考代码:

#include <map>
#include <iostream>
#include <cstdio>
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;
}
 

0.0分

3 人评分

  评论区

  • «
  • »