【牛客顺序结构 02】排列式
链接:https://ac.nowcoder.com/acm/contest/18839/1002
来源:牛客网
7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次
输出所有这样的不同的式子(乘数交换被认为是相同的式子)
结果小的先输出;结果相同的,较小的乘数较小的先输出。
来源:牛客网
题目描述
7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次
输出所有这样的不同的式子(乘数交换被认为是相同的式子)
结果小的先输出;结果相同的,较小的乘数较小的先输出。
输入描述:
每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格
较小的乘数写在前面
输出描述:
示例1
输出
复制4396 = 28 x 157 5346 = 18 x 297 5346 = 27 x 198 5796 = 12 x 483 5796 = 42 x 138 6952 = 4 x 1738 7254 = 39 x 186 7632 = 48 x 159 7852 = 4 x 1963
题解:是哪个天才想到的全排列解决问题的……太神了
#include<bits/stdc++.h> using namespace std; int a[15],z,x,y; int main(){ for(int i=1;i<=9;i++) a[i]=i; while(next_permutation(a+1,a+9+1)){ z=a[1]*1000+a[2]*100+a[3]*10+a[4]; x=a[5]*10+a[6]; y=a[7]*100+a[8]*10+a[9]; if(z==x*y) printf("%d = %d x %d\n",z,x,y); x=a[5]; y=a[6]*1000+a[7]*100+a[8]*10+a[9]; if(z==x*y) printf("%d = %d x %d\n",z,x,y); } return 0; }