题目描述
将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
————————————————
思路:可以直接枚举第一个数,然后算出后面两个数,且第一个数无需枚举所有三位数。
#include<bits/stdc++.h>
using namespace std;
int a,b,c,flag=0;
int j,k;
int main()
{
scanf("%d%d%d",&a,&b,&c);
for(int i=(123/a+min(123%a,1))*a;i<=987/a*a;i+=a)
{
j=i/a*b;
k=i/a*c;
if(j >= 100 && j <= 999 && k >= 100 && k <= 999)
{
int d[10],sum=0,xx=1;
d[1]=i/100;
d[2]=i/10%10;
d[3]=i%10;
d[4]=j/100;
d[5]=j/10%10;
d[6]=j%10;
d[7]=k/100;
d[8]=k/10%10;
d[9]=k%10;
for(int m=1;m<=9;m++)
{
sum += d[m];
xx *= d[m];
}
if(sum == 45 && xx == 362880)
{
flag = 1;
printf("%d %d %d\n",i,j,k);
}
}
}
if(flag == 0)printf("No!!!");
return 0;
}