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