题目描述
将 1,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!
。
//感谢黄小U饮品完善题意
输入格式
三个数,A,B,C。
输出格式
若干行,每行 3 个数字。按照每行第一个数字升序排列。
输入输出样例
输入 #1
1 2 3输出 #1
192 384 576 219 438 657 273 546 819 327 654 981
说明/提示
保证 A<B<C。
题目难度
普及-
解题思路
这一题很简单,做过P1008的人应该都会,只是把比例改一改而已
参考代码
#include<iostream>
using namespace std;
int a[10],b1,b2,b3,l,k1,k2,k3,ans;
int main ()
{
cin >>k1>>k2>>k3;
for (int b=1;b<=1000/k3;++b)
{
b1=b*k1;//求出三个数
b2=b*k2;
b3=b*k3;
if (b2>999||b3>999)break;
for (int c=1;c<=3;++c)//将三个数进行分解,判断是否重复
{
a[b1%10]++;
b1/=10;
}
for (int c=1;c<=3;++c)
{
a[b2%10]++;
b2/=10;
}
for (int c=1;c<=3;++c)
{
a[b3%10]++;
b3/=10;
}
for (int c=1;c<=9;++c)if (a[c]!=1){l=1;break;}
for (int c=1;c<=9;++c)a[c]=0;
if (!l){cout <<b*k1 <<" " <<b*k2 <<" " <<b*k3 <<endl;ans++;}//将解输出,并做标记
else l=0;
}
if (!ans)cout <<"No!!!";//判断无解情况
return 0;
}
upd 2022.8.3upd 2022.8.3:新增加二组 Hack 数据。
点击此处,跳转原题
点击此处,跳转P1008