洛谷p1008 三连击

https://www.luogu.org/problemnew/show/P1008

题目描述

1,2,3,4,5,6,7,8,9共9个数分成3组,分别组成3个三位数,且使这3个三位数的值构成1:2:3的比例,试求出所有满足条件的3个三位数。

输入输出格式

输入格式:

木有输入

输出格式:

若干行,每行33个数字。按照每行第11个数字升序排列。

思路:可以让三组数分别等于a,b,c,又因为三组数要有1:2:3的关系,所以直接令b=2a,c=3a。

接下来再检测a,b,c里面有没有重复的数字,把a,b,c的个十百位全部分离出来,放到一个数组里面。

再用循环判断数组的元素是不是有重复,如果没有重复就输出。

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int a,b,c;
    for(a=123;a<329;a++){   ///a的最大的取值范围 
        int flag=1;
        b=a*2;
        c=a*3;
        int k[9];
        int a1,b1,c1;
        a1=a;
        b1=b;
        c1=c;
        for(int i=0;i<9;i=i+3){
            k[i]=a1%10;
            a1=a1/10;
            k[i+1]=b1%10;
            b1=b1/10;
            k[i+2]=c1%10;
            c1=c1/10;
        }
        for(int i=0;i<9;i++){
            for(int j=0;j<9;j++){
                if(k[i]==k[j]&&i!=j)
                flag=0;
            }
        }
        for(int i=0;i<9;i++)
        if(k[i]==0)
        flag=0;
        if(flag) cout<<a<<" "<<b<<" "<<c<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/wushengyang/p/10583326.html