洛谷p1008 三连击

时间:2023-03-09 08:26:00
洛谷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=;a<;a++){ ///a的最大的取值范围
int flag=;
b=a*;
c=a*;
int k[];
int a1,b1,c1;
a1=a;
b1=b;
c1=c;
for(int i=;i<;i=i+){
k[i]=a1%;
a1=a1/;
k[i+]=b1%;
b1=b1/;
k[i+]=c1%;
c1=c1/;
}
for(int i=;i<;i++){
for(int j=;j<;j++){
if(k[i]==k[j]&&i!=j)
flag=;
}
}
for(int i=;i<;i++)
if(k[i]==)
flag=;
if(flag) cout<<a<<" "<<b<<" "<<c<<endl;
}
return ;
}