p1772 巧妙填数

描述
将1,2,⋯,9共99个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例。

试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576192,384,576满足以上条件。

格式
输入格式
无输入。

输出格式
需要输出全部结果。每行输出3个数 用空格隔开。按照字典序的顺序输出。

思路
模拟。

代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int number[9]={1,2,3,4,5,6,7,8,9};
    int n[9]={1,2,3,4,5,6,7,8,9};
    int i,j,k,p,q,index=0;
    int s,s2,s3;
    int h,t,l,h2,t2,l2,h3,t3,l3;
    for(i=0;i<9;i++){
        n[i]=-1;
        for(j=0;j<9;j++){
            if(n[j]==-1){
                continue;
            }
            n[j]=-1;
            for(k=0;k<9;k++){
                if(n[k]==-1){
                continue;
                }
                s=100*number[i]+10*number[j]+number[k];
                s2=s*2;
                s3=s*3;
                h=number[i];
                t=number[j];
                l=number[k];
                h2=s2/100;
                t2=(s2-h2*100)/10;
                l2=(s2-h2*100-t2*10);
                h3=s3/100;
                t3=(s3-h3*100)/10;
                l3=(s3-h3*100-t3*10);
                int temp[9]={h,t,l,h2,t2,l2,h3,t3,l3};
                for(p=0;p<9;p++){
                    for(q=0;q<9;q++){
                        if(number[p]==temp[q]){
                            index++;
                            break;
                        }
                    }
                }
                if(index==9){
                    printf("%d %d %d
",s,s2,s3);
                }
                index=0;
            }
            n[j]=j+1;
        }
        n[i]=i+1;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/archemiya/p/8482336.html