洛谷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;
}