初级守护
完全没有输出,求解释:
#include<bits/stdc++.h>
using namespace std;
bool b[10];
int p[5],o[25];
bool flag,flag2,jl;
int main()
{
for(int i=16;i<=81;i++)
{
if(i!=16&&i!=25&&i!=36&&i!=49&&i!=64&&i!=81)
{
continue;
}
flag=true;
b[1]=b[2]=b[3]=b[4]=b[5]=b[6]=b[7]=b[8]=b[9]=true;
for(int j=289;j<=961;j++)
{
b[i/10]=b[i%10]=b[j/100]=b[j%10]=b[j/10%10]=false;
int cnt=0;
for(int k=1;k<=9;k++)
{
int ppp=0;
if(b[k])
{
p[++ppp]=k;
cnt++;
}
if(cnt!=4)
{
flag=false;
break;
}
else
{
o[1]=p[1]*1000+p[2]*100+p[3]*10+p[4];
o[2]=p[1]*1000+p[2]*100+p[4]*10+p[3];
o[3]=p[1]*1000+p[3]*100+p[2]*10+p[4];
o[4]=p[1]*1000+p[3]*100+p[4]*10+p[2];
o[5]=p[1]*1000+p[4]*100+p[2]*10+p[3];
o[6]=p[1]*1000+p[4]*100+p[3]*10+p[2];
o[7]=p[2]*1000+p[1]*100+p[3]*10+p[4];
o[8]=p[2]*1000+p[1]*100+p[4]*10+p[3];
o[9]=p[2]*1000+p[3]*100+p[1]*10+p[4];
o[10]=p[2]*1000+p[3]*100+p[4]*10+p[1];
o[11]=p[2]*1000+p[4]*100+p[1]*10+p[3];
o[12]=p[2]*1000+p[4]*100+p[3]*10+p[1];
o[13]=p[3]*1000+p[1]*100+p[2]*10+p[4];
o[14]=p[3]*1000+p[1]*100+p[4]*10+p[2];
o[15]=p[3]*1000+p[2]*100+p[1]*10+p[4];
o[16]=p[3]*1000+p[2]*100+p[4]*10+p[1];
o[17]=p[3]*1000+p[4]*100+p[1]*10+p[2];
o[18]=p[3]*1000+p[4]*100+p[2]*10+p[1];
o[19]=p[4]*1000+p[1]*100+p[3]*10+p[2];
o[20]=p[4]*1000+p[1]*100+p[2]*10+p[3];
o[21]=p[4]*1000+p[2]*100+p[1]*10+p[3];
o[22]=p[4]*1000+p[2]*100+p[3]*10+p[1];
o[23]=p[4]*1000+p[3]*100+p[1]*10+p[2];
o[24]=p[4]*1000+p[3]*100+p[2]*10+p[1];
}
}
flag2=false;
for(int u=1;u<=24;u++)
{
if((int)sqrt(o[u])*(int)sqrt(o[u])==o[u])
{
flag2=true;
jl=o[u];
break;
}
}
if(((int)sqrt(j))*((int)sqrt(j))==j&&flag&&flag2)
{
cout<<i<<" "<<j<<" "<<jl<<endl;
}
}
}
return 0;
}
中级启示者
太复杂了,直接输出:
16 784 5329
25 784 1369
25 784 1936
25 841 7396
36 729 5184
81 324 7569
81 576 3249
81 729 4356