用123456789组成三个三位数,每个数字只能用一次,使得第二个数是第一个数的两倍,第三个数是第一个数的三倍

/*用123456789组成三个三位数,每个数字只能用一次,使得第二个数是第一个数的两倍,第三个数是第一个数的三倍*/

#include<stdio.h>

int x1,x2,x3,y1,y2,y3,z1,z2,z3;

void quwei(int &x1,int &x2,int &x3,int x){

x3=x%10;

x2=((x-x3)/10)%10;

x1=((x-x3-10*x2)/100)%10;

//printf(“%d %d %d \n”,x1,x2,x3);

}

/*对循环的数字进行判断*/ 

int *shuzu(int x1,int x2,int x3,int b[9]){

for(int i=0;i<9;i++){

if(x1==b[i])b[i]=0;

}

//printf(“===%d===\n”,x1);

for(int i=0;i<9;i++){

if(x2==b[i])b[i]=0;

}

//printf(“===%d===\n”,x2);

for(int i=0;i<9;i++){

if(x3==b[i])b[i]=0;

}

return b;

}

int pan(int x,int y,int z){

int b[9]={1,2,3,4,5,6,7,8,9};

int t=0;

quwei(x1,x2,x3,x);quwei(y1,y2,y3,y);quwei(z1,z2,z3,z);

shuzu(x1,x2,x3,b);shuzu(y1,y2,y3,b);shuzu(z1,z2,z3,b);

for(int i=0;i<9;i++){

if(b[i]==0)t++;//对0计数 

}

if(t==9)//若b[]中的0为九个则说明123456789都被用到,则满足题意返回1 

return 1;

else return 0;

}

int main(){

int x,y,z;

for(x=123;x<398;x++){

     y=2*x;z=3*x;

    if(z<987&&(x%10!=0)&&(y%10!=0)&&(z%10!=0))

if(pan(x,y,z))

printf(“x=%d\ty=%d\tz=%d\n”,x,y,z);}

return 0;

  1. /*全局变量要慎用,在本例中由于在开始时将t作为全局变量,在对b[]中的0进行计数时造成了数量的叠加。*/ 
    原文作者:FANtastic_Y
    原文地址: https://blog.csdn.net/FANtastic_Y/article/details/68215201
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞