学习小结

来源:互联网 发布:淘宝驳回售后服务 编辑:程序博客网 时间:2024/06/14 00:43

将1,2,3,4,5,6,7,8,9九个数字分成N=XX(XXXX/XXX)的形式

#include <stdio.h>



int main()
{
    int x;
    int j;
    int k;
int i;
int l;
int m;
int n;
int p;
int q;
int o;
    int a [ 9 ];
    for( x = 12; x<99; x++)                          //遍历x
        for( j = 1234; j<9877; j++)                 //遍历j
            for( k = 123; k < 988; k++)            //遍历k
            {
m = j;
n = k;
a [ 7 ] = x/10;                            //将x分解成构成的数字
a [ 8 ] = x%10;
for( i = 0,l = 1000; i<4; i++)        //将j分解成构成的四个数字             
{
   a [ i ] = m/l;
m %= l;
l /= 10;
}
for( i = 4,l = 100; i<7; i++)                //将k分解成构成的三个数字
{
   a [ i ] = n/l;
n %= l; 
l /= 10;
}
if( a [ 0 ]*a [ 1 ]*a [ 2 ]*a [ 3 ]*a [ 4 ]*a [ 5 ]*a [ 6 ]*a [ 7 ]*a [ 8 ] == 362880)    //构成x,j,k的九个数字是否等于9!
                {
for( i = 0; i<8; i++)                          //判断九个数字是否相同,全部不同则跳出循环
{
for( p = i+1; p<9; p++)
{
q = a [ i ];
o = a [ p ];
   if(q == o)
   break;
}
   if( p != 9)
break;
}
if( j%k == 0 && i == 8)                          当j能被k整除且九个不同数字都能输出时,输出N=XX(XXXX/XXX)
printf("N = %d(%d/%d)\n",x,j,k);

}
}


}

此题需要当心判断条件,首先要满足的就是九个数是1,2,3,。。。。,9构成,这里利用他们的乘积满足九的阶乘且九个数字各个不同。

if( a [ 0 ]*a [ 1 ]*a [ 2 ]*a [ 3 ]*a [ 4 ]*a [ 5 ]*a [ 6 ]*a [ 7 ]*a [ 8 ] == 362880)    //构成x,j,k的九个数字是否等于9!
                {
for( i = 0; i<8; i++)                          //判断九个数字是否相同,全部不同则跳出循环
{
for( p = i+1; p<9; p++)
{
q = a [ i ];
o = a [ p ];
    if(q == o)
    break;
}
    if( p != 9)
break;

我这里利用了两个for循环中再加入if语句判断,当前面的数不同于后面所有的数,最后当满足排列后再跳出循环。

if( j%k == 0 && i == 8) 

最后用j能被k整除带入其中,i == 8则是验证之前循环是否完成。

0 0
原创粉丝点击