蓝桥杯一道题不知道为什么我的程序错了33%,有大神能帮我看下有哪里不妥吗
题目描述小明发现49很有趣,首先,它是个平方数。它可以拆分为4和9,拆分出来的部分也是平方数。169也有这个性质,我们权且称它们为:拼接平方数。100可拆分1 00,这有点勉强,我们规定,0 00 000 等都不算平方数。小明想:还有哪些数字是这样的呢?你的任务出现了:找到某个区间的所有拼接平方数。
输入
两个正整数 a b (a<b<10^6)
输出
若干行,每行一个正整数。表示所有的区间[a,b]中的拼接平方数
样例输入
1 200
样例输出
49
169
#include <stdio.h>
#include <math.h>
int j,i,n,n2,k,sum1=0,sum2=0,sum,mark1,mark2,a[100]={0},b[100]={0},c[100]={0};
int weishu(int n)
{
n2=n;
for(int j=1;n2>0;j++)
{
n2/=10;
sum=j;
}
for(int i=sum;i>=1;i--) { a[i]=n%10;n/=10; }
return sum;
}
int fenzu(int n)
{
weishu(n);
for(int i=2;i<=weishu(n);i++)
{
int genhao(int n);int sum1=0,sum2=0;
for(int j=1;j<i;j++) { sum1*=10;sum1+=a[j];mark1=j; }
for(int t=1;t<=mark1;t++) b[t]=0;
for(k=i;k<=weishu(n);k++) { sum2*=10;sum2+=a[k];mark2=k; }
for(int q=1;q<=mark2;q++) c[q]=0;
if(sum1!=0&&sum2!=0&&sum1!=1&&sum2!=1&&genhao(n)==1)
{ if(genhao(sum1)&&genhao(sum2)) printf("%d\n",n); }
}
}
int genhao(int n)
{
if(!n) return 0;
return floor(sqrt(n)+0.5)==sqrt(n)?1:0;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b); for(int i=a;i<=b;i++) fenzu(i);
return 0;
}