题目描述
将 1,2,…,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。
输入输出格式
输入:三个数,A,B,C。
输出:若干行,每行 33 个数字。按照每行第一个数字升序排列。
输入输出样例
输入
1 2 3
输出
192 384 576
219 438 657
273 546 819
327 654 981
题目解答
!!注意点:
- 全排列的使用
do{ }
while(next_permutation(a,a+n); - 顺序排列表示最小序列,逆序表示最大序列;next_permutation表示下一个排列(顺次大于的排列),如果没有就返回false
AC代码如下:
using namespace std;
#include <iostream>
#include <algorithm>
#include <cstring>
int cc[9]={1,2,3,4,5,6,7,8,9};
int main ()
{
int a,b,c;
int flag=0;
cin>>a>>b>>c;
do{
int a1=cc[0]*100+cc[1]*10+cc[2];
int b1=cc[3]*100+cc[4]*10+cc[5];
int c1=cc[6]*100+cc[7]*10+cc[8];
if(a1*b==a*b1&&a1*c==c1*a&&b1*c==c1*b)
{
flag=1;
cout<<a1<<" "<<b1<<" "<<c1<<endl;
}
}
while(next_permutation(cc,cc+9));
if(flag==0)
{
cout<<"No!!!";
}
return 0;
}
参考:
1.全排列 next_permutation() 函数的用法:体会sort的重要性
2.next_permutation的思想和用法体会何为下一个序列