题目描述
将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。
分析 :
由于比值确定,所以本题可以通过枚举一个数来确定其他两个数,最后检验结果是否同时满足9个数字即可,需要注意的是这样做需要对后两个数的大小进行限制,否则可能超过三位。
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int a[10];
int A,B,C,res;
bool check(int x,int y,int z)
{
for(int i=0;i<10;i++) a[i]=0;
//if(y>999||z>999) return false;
while(x)
{
a[x%10]++;
x/=10;
}
while(y)
{
a[y%10]++;
y/=10;
}
while(z)
{
a[z%10]++;
z/=10;
}
for(int i=1;i<10;i++)
{
if(a[i]!=1) return false;
}
return true;
}
int main()
{
cin>>A>>B>>C;
int x,y,z;
for(x=123;x<=987;x++)
{
if(x*B%A||x*C%A) continue;
y=x*B/A;
z=x*C/A;
if(check(x,y,z))
{
res++;
cout<<x<<' '<<y<<' '<<z<<endl;
}
}
if(!res) cout<<"No!!!";
return 0;
}