拆分平方数问题

小明发现49很有趣,首先,它是个平方数。它可以拆分为4和9,拆分出来的部分也是平方数。169也有这个性质,我们权且称它们为:拼接平方数。100可拆分1 00,这有点勉强,我们规定,0 00 000 等都不算平方数。小明想:还有哪些数字是这样的呢?
你的任务出现了:找到某个区间的所有拼接平方数。

【输入】
两个正整数 a b (a<b<10^6)

【输出】
若干行,每行一个正整数。表示所有的区间[a,b]中的拼接平方数

样例输入:
1 200
样例输出:
49
169

样例输入:
169 10000
样例输出:
169
361
1225
1444
1681
3249
4225
4900
9025

​#include<stdio.h>
#include<math.h>
bool check(int a) {
	int t=(int)sqrt(a);
	if(t*t==a)return 1;
	return 0;
}
bool check2(int a) {
	int v=a;
	int t1=0,t2=0,flag[8],i=0;
	while(a!=0){
		flag[i]=a%10;
		a/=10;
		i++;
	}
	for(int j=i-1; j>0; j--) {
		t1+=flag[j];
		if(!check(t1)) {
			t1*=10;
			continue;
		}
		for(int k=j-1; k>=0; k--) {
			t2+=flag[k];
			if(k==0)continue;
			t2*=10;
		}
		if(t2==0) continue;
		if(check(t2))return true;
		t2=0;
		t1*=10;
	}
	return false;
}
int main() {
	int a,b;
	scanf("%d%d",&a,&b);
	for(int i=a; i<=b; i++)if(check2(i)&&check(i)) printf("%d\n",i);
	return 0;
}
​

猜你喜欢

转载自blog.csdn.net/qq_43484493/article/details/86512363
今日推荐