【牛客顺序结构 02】排列式

链接:https://ac.nowcoder.com/acm/contest/18839/1002
来源:牛客网

题目描述


  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;
}

 

posted @ 2023-11-04 00:14  #Cookies#  阅读(69)  评论(0编辑  收藏  举报