牛客·NC18929·排列式·顺序结构题
题目描述
7254 = 39 x 186 这个式子中1-8每个数字正好出现一次,
输出所有这样不同的式子(乘数交换被认为是相同的式子)结果小的先输出
题目分析
可以发现9个数字只能出现
4 = 4 x 1
4 = 3 x 2
两种请况
将a[9] = {1,2,3,4,5,6,7,8,9} 全排列,这样可以避免9位中出现重复的数字,每次循环都比较4 = 4 x 1 ,4 = 3 x 2是否满足。
代码实现
使用#include <algorithm>头文件是要用到 next_permutation()函数实现全排列
#include <iostream>
#include <algorithm>
using namespace std;
int a[9] = { 1,2,3,4,5,6,7,8,9 };
int main() {
while (next_permutation(a, a + 9)) {
int n = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
int m = a[4];
int c = a[5] * 1000 + a[6] * 100 + a[7] * 10 + a[8];
if (n == m * c) {
cout << n << " = " << m << " x " << c << endl;
}
int p = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
int q = a[4] * 10 + a[5];
int u = a[6] * 100 + a[7] * 10 + a[8];
if (p == q * u) {
cout << p << " = " << q << " x " << u << endl;
}
}
return 0;
}