版权声明:如果是我原创的文章,请转载时,注明是来自我的转帖,加上我帖子的地址。谢谢! https://blog.csdn.net/mengdicfm/article/details/82960015
题目描述
将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;
}