时间限制1.00s 内存限制128.00MB 难易度:普及−
【题目描述】
将 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。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,maxx,bx,cx,t1,t2,t3,i,t=0;
cin>>a>>b>>c;
if(a==0||b==0||c==0) //判断a,b,c中是否有零。
{
cout<<"No!!!"<<endl;
return 0;
}
if(c%a==0&&a!=1&&b%a==0) //判断比例是否出已化至最简。
{
b=b/a;
c=c/a;
a=a/a;
}
maxx=c;
if(a>=123) //判断是否出现例如123:456:789的情况。
{
t1=a/10;
t2=b/10;
t3=c/10;
if(t1/10+t1%10+a%10+t2/10+t2%10+b%10+t3/10+t3%10+c%10==45&&(t1/10)*(t1%10)*(a%10)*(t2/10)*(t2%10)*(b%10)*(t3/10)*(t3%10)*(c%10)==362880)
{ //判断是否成立。 //1*2*3*4*5*6*7*8*9=362880。
cout<<a<<" "<<b<<" "<<c<<endl;
t=1;
}
}
else
for(i=123;i<=999/maxx;i++) //普通情况。
if(i%a==0)
{
bx=(i/a)*b;
cx=(i/a)*c;
t1=i/10;
t2=bx/10;
t3=cx/10;
if(t1/10+t1%10+i%10+t2/10+t2%10+bx%10+t3/10+t3%10+cx%10==45&&(t1/10)*(t1%10)*(i%10)*(t2/10)*(t2%10)*(bx%10)*(t3/10)*(t3%10)*(cx%10)==362880)
{ //判断是否成立。
cout<<i<<" "<<bx<<" "<<cx<<endl;
t=1;
}
}
if(t==0) //如果没有满足条件的三个三位数。
{
cout<<"No!!!"<<endl;
}
return 0;
}