ZZULIOJ 1149 组合三位数之二

题目描述

把1,2,3,4,5,6,7,8,9,组成三个三位数(每个数只能用一次),第二个数是第一个数的2倍,第三个数是第一个数的3倍,这三个三位数各是多少?答案可能有很多组,请按第一个数的升序顺序输出每组的三个三位数。

输入

输出

输出所有满足条件的三位数组合,按第一个数的升序顺序输出。

样例输出 Copy

192 384 576
.........

立志成为一方大佬! 

#include<stdio.h>
  int main()
  {
      int s[864]={0};//保存个位十位百位不相同的三位数 
      int a[864][3]={0};//保存三位数中个位十位百位 
      int t[3]={0};
      int i,j=0;
       int b,k,n=0;
      for(i=123;i<=987;i++)
      {
          t[0]=i%10;
          t[1]=i/10%10;
          t[2]=i/100;
          if((t[0]-t[1])*(t[1]-t[2])*(t[0]-t[2])!=0&&t[0]!=0&&t[1]!=0)  //排除个位十位百位数字相同的三位数,以及个位十为0的数字 
          {
              //将满足上述条件的数字保存到数组中 
          a[j][0]=t[0]; 
            a[j][1]=t[1];
            a[j][2]=t[2];
              s[j]=i;    
              j++;    
          }
      }
      for(i=0;i<j-2;i++)
      {
          for(b=i+1;b<j-1;b++)
          {
              for(k=b+1;k<j;k++)
              {
                  if(s[k]==3*s[i]&&s[b]==2*s[i])
                  {int zon[9]={0};   
                   
                                   zon[a[i][0]-1]=1;
                                   zon[a[i][1]-1]=1;
                                   zon[a[i][2]-1]=1;
                                   zon[a[b][0]-1]=1;
                                   zon[a[b][1]-1]=1;
                                   zon[a[b][2]-1]=1;
                                   zon[a[k][0]-1]=1;
                                   zon[a[k][1]-1]=1;
                                   zon[a[k][2]-1]=1;
                                   //执行到此时数组zon中的9个元素,不是0就是1 
                                   for(n=0;n<9;n++)
                                   {
                                       if(zon[n]==0)
                                       break;
                                   }
                                   if(n==9)//当数组zon中的元素全为1时,说明数组s[i],s[b],s[k]三个数各个数字均不同 
                                   {
                                    printf("%d %d %d\n",s[i],s[b],s[k]);
                                   }
                  }
              }
          }
      }
      
      
      
    return 0; 
      
      
  }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值