c++程序题,使用数字1——9填充下面的等式:,每个内的数字互不相同。这里sqrt(a)表示a的开方。试找出所有的解
使用数字1——9填充下面的等式:sqrt(6个数字)= 3个数字,每个内的数字互不相同。这里sqrt(a)表示a的开方。试找出所有的解,用int main函数
#include<stdio.h>
int main()
{
long x;
int p[10];
int i,t,k;
int num=0;
int n,f,y,m;
for(x=100;x<=999;x++)
{
for(i=0;i<=9;i++)
p[i]=1;
y=x*x; //y表示6位数
f=y; //将y暂时存放在f中
n=x; //n表示3位数
if(f<=999999)
{
k=0;
for(i=1;i<=6;i++)
{
t=n%10;
n=n/10;
m=f%10;
f=f/10;
if(m==t)
{
k=0;
break;
}
if(i<4)
if(p[t]==1)
{
p[t]=0;
k++;
}
else
{
k=0;
break;
}
if(p[m]==1)
{
p[m]=0;
k++;
}
else
{
k=0;
break;
}
}
if(k==9)
{
num=num+1;
printf("%ld\t%d\n",x,y);
}
}
else
continue;
}
printf("\n");
printf("%d\n",num);
return 0;
}
思路:
1.定义一个数组,把开根号的数据保存到数组里面;
2.对每个元素进行除法,与取模运算,分别求出百,十,个位,比较是否相等,相等就删除;
能给一下时间限制吗