洛谷P1618 三连击(升级版) (暴力全排列枚举)
目录
洛谷P1618 三连击(升级版) (暴力全排列枚举)
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。
输入格式
三个数,A B C。
输出格式
若干行,每行3个数字。按照每行第一个数字升序排列。
思路
将九个数字存到一个数组a,用**next_permutation(a,a+9)**枚举每一种情况并判断即可
注意
用do while
代码
#include<bits/stdc++.h>
using namespace std;
int a[9]={1,2,3,4,5,6,7,8,9};
int A,B,C;
int x,y,z;
int getSum()
{
x=a[0]*100+a[1]*10+a[2];
y=a[3]*100+a[4]*10+a[5];
z=a[6]*100+a[7]*10+a[8];
}
int main()
{
cin>>A>>B>>C;
int ans=0,flag=1;
do
{
getSum();
//printf("%d %d %d\n",x,y,z);
if(x*B*C==y*A*C&&x*B*C==z*A*B)
{
flag=0;
printf("%d %d %d\n",x,y,z);
}
}while(next_permutation(a,a+9));
if(flag) printf("No!!!\n");
return 0;
}