蓝桥杯 算法提高 排列式

来源:互联网 发布:广州多迪网络要交钱吗 编辑:程序博客网 时间:2024/06/18 10:12


  算法提高 排列式  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次
  输出所有这样的不同的式子(乘数交换被认为是相同的式子)
  结果小的先输出;结果相同的,较小的乘数较小的先输出。
输出格式
  每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格
  较小的乘数写在前面
样例输出
问题中的式子在结果中会出现一行如下:
7254 = 39 x 186
------------------------------------------------------
思考:
为了满足1-9共9位数。
首先3位数只能=1位数*3位数 || 两位数*两位数
四位数=1*4  ||  2*3位数;
推下去五位数的都不满足。不用考虑。。。
next_permutation(a,a+9),是#include<algorithm>中的一个全排列函数,经常用到。

给出代码:

#include<iostream>#include<algorithm>using namespace std;int main(){int a[9]={1,2,3,4,5,6,7,8,9};do{int q,w,e;        //四位数=1位数*4位数 q=a[0]*1000+a[1]*100+a[2]*10+a[3];w=a[4];e=a[5]*1000+a[6]*100+a[7]*10+a[8];if(q==w*e)cout <<q<<" = "<<w<<" x "<<e<<endl; int x,y,z;                  //四位数=2位数*3位数 x=a[0]*1000+a[1]*100+a[2]*10+a[3];y=a[4]*10+a[5];z=a[6]*100+a[7]*10+a[8];if(x==y*z)cout <<x<<" = "<<y<<" x "<<z<<endl;}while(next_permutation(a,a+9));return 0;}

输出的数据是:
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
  算法提高 排列式  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次
  输出所有这样的不同的式子(乘数交换被认为是相同的式子)
  结果小的先输出;结果相同的,较小的乘数较小的先输出。
输出格式
  每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格
  较小的乘数写在前面
样例输出
问题中的式子在结果中会出现一行如下:
7254 = 39 x 186
原创粉丝点击