问题标题: 酷町堂:4543:不知道哪里错了

0
0
已解决
周瑞麟
周瑞麟
初级守护
初级守护

完全没有输出,求解释:

#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;


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

 

0
0
李锦昊
李锦昊
中级天翼
中级天翼

主函数:

  • int main(){
  • for(int i=sqrt(12);i<=sqrt(98);i++){
  • for(int j=sqrt(123);j<=sqrt(987);j++){
  • for(int k=sqrt(1234);k<=sqrt(9876);k++){
  • memset(a,0,sizeof(a));
  • int x=i*i,b=j*j,c=k*k;
  • Num(x);
  • Num(b);
  • Num(c);
  • if(Judge())
  • cout<<x<<" "<<b<<" "<<c<<endl;
  • }
  • }
  • }
  • 用void

我要回答