暴力枚举——三连击(升级版)
题目描述
将 1,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。
输入格式
三个数,A,B,C。
输出格式
若干行,每行 3 个数字。按照每行第一个数字升序排列。
输入输出样例
输入样例
1 2 3
输出样例
192 384 576
219 438 657
273 546 819
327 654 981
说明/提示
保证 A < B < C。
分析
这题可以使用 STL 中的 next_permutation 函数,得到 1~9 的全排列,并对得到的排列进行划分,前三个为一个数,中间三个为一个数,后三个为一个数,最后输出符合要求的数即可。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
int f[9]={1,2,3,4,5,6,7,8,9};
int flag=0;
do{
int x=f[0]*100+f[1]*10+f[2];
int y=f[3]*100+f[4]*10+f[5];
int z=f[6]*100+f[7]*10+f[8];
if(x*b==y*a&&x*c==z*a){
flag=1;
printf("%d %d %d\n",x,y,z);
}
}while(next_permutation(f,f+9));
if(!flag)
printf("No!!!");
return 0;
}