题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。

输入格式:
三个数,A B C。

输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。

输入样例#1:
1 2 3
输出样例#1:
192 384 576
219 438 657
273 546 819
327 654 981
说明
保证A<B<C

//t[1]至t[3]保存第一个数字的百位、十位、个位数字
//t[4]至t[6]保存第二个数字的百位、十位、个位数字
//t[7]至t[9]保存第三个数字的百位、十位、个位数字
#include<iostream>
using namespace std;
int main()
{
	int i,j,l;
	int a,b,c,flag=1;
	int maxnum1=0,count=0;
	int num1,num2,num3,t[10]={0,0,0,0,0,0,0,0,0,0};
	cin>>a>>b>>c;
	maxnum1=(999*a)/c;
	for(i=1;i<=9;i++)
	{
		t[1]=i;
		for(j=1;j<=9;j++)
		{
			if(j==i) continue;
			t[2]=j;
			for(l=1;l<=9;l++)
			{
				flag=1;
				if(l==i||l==j) continue;
				t[3]=l;
				num1=i*100+j*10+l;
				if(num1>maxnum1) break;
				else
				{
					num2=num1*b/a;
					num3=num1*c/a;
					t[4]=num2/100;
					t[5]=(num2/10)%10;
					t[6]=num2%10;
					for(int k=4;k<=6;k++)
						{
						for(int m=1;m<=k-1;m++)
							if(t[k]==t[m]||t[k]==0)
							{
							flag=0;	break;
							}
						if(flag==0) break;
						else //flag!=0
						{
							flag=1;
							t[7]=num3/100;
							t[8]=(num3/10)%10;
							t[9]=num3%10;
							for(int n=7;n<=9;n++)
							{
							   for(int o=1;o<=n-1;o++)
								{
									if(t[n]==0||t[n]==t[o])
									{
									flag=0;break;
									}
								}
							if(flag==0)
							break;
							}

						}
						}
				if(flag)
				{
					count++;
					cout<<num1<<" "<<num2<<" "<<num3<<endl;
				}

				}

			}

		}
	}
	if(count==0)
	{
		cout<<"No!!!"<<endl;
	}
	return 0;
}
10-07 18:26