编写程序,把1,2,3,4,5,6,7,8,9组合成三个三位数,要求每个数字仅用一次,使每个三位数为完全平方数。

#include <stdio.h>
#define bool int
#define true 1
#define false 0
int check(int n)
{
  for(int i=2;i<=n-1;i++)
  {
    if(i*i==n)
      return i;
  }
  return 0;
}
//检查是否是完全平方数;
bool check1(int n)
{
  int r1,r2,r3;
  r1=n%10;
  r2=n/10%10;
  r3=n/100;
  if(r1!=r2&&r2!=r3&&r1!=r3)
  {
    return true;
  }
  else
  {return false;}
}
//检查完全平方数是否每位都不一样;
bool check2(int q,int w,int e)
{
   int m[10];
   m[0]=0;
   m[1]=q%10;
  m[2]=q/10%10;
  m[3]=q/100;
  m[4]=w%10;
  m[5]=w/10%10;
  m[6]=w/100;
  m[7]=e%10;
  m[8]=e/10%10;
  m[9]=e/100;
  bool flag=true;
  while(flag)
  {
    flag=false;
    for(int i=0;i<10;i++)
  {
    if(m[i]>m[i+1])
    {
      int temp=m[i];
      m[i]=m[i+1];
      m[i+1]=temp;
      flag=true;
    }
  }
  }
  for(int j=0;j<10;j++)
  {
    if(m[j]!=j)
    {
      return false;
    }
  }
    return true;
}
//检查三个完全平方数是否每位都不一样;
int main()
{
  int k;
  int b[100],sign=0;
  for(int i=100;i<999;i++)
  {
    k=check(i);
    if(k!=0)
    {
      b[sign]=i;
      sign++;
    }
  }
  bool flag;
  int c[20];
  int sign1=0;
  for(int j=0;j<sign;j++)
  {
    flag=check1(b[j]);
    if(flag)
      {
        c[sign1]=b[j];
        sign1++;
      }
  }
  
  for(int i=0;i<=10;i++)
  {
    for(int j=i+1;j<=11;j++)
    {
      for(int k=j+1;k<=12;k++)
      {
        bool flag1=check2(c[i],c[j],c[k]);
        if(flag1)
        {
          printf("%d %d %d",c[i],c[j],c[k]);
        }
      }
    }
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值