2020-10-12

[蓝桥杯2017初赛]9数算式

题目描述
观察如下的算式:9213 x 85674 = 789314562
左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。
而乘积恰好也是用到了1~9的所有数字,并且每个1次。
请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?
注意:

  1. 总数目包含题目给出的那个示例。
  2. 乘数和被乘数交换后作为同一方案来看待
#include <iostream>
#include <vector>
#include<algorithm>
#include<map>
#include<math.h>
#define ll long long
using namespace std;

int main(){
	int a[9]={1,2,3,4,5,6,7,8,9};
	int cnt=0;
    do{
    	for(int i=0;i<8;i++){
    		int b[10]={0};
    		long long c1=0,c2=0,c3=0,sum=0;
    		for(int k=0;k<=i;k++){//l 
    			c1=c1*10+a[k];
			}
			
    		for(int j=i+1;j<9;j++){//r
    			c2=c2*10+a[j];
			} 
		
			c3=c1*c2;
    		while(c3){
				if(b[c3%10]==0&&c3%10!=0){
					b[c3%10]=1;
					sum++; 
				}
				c3/=10;
		    }
			if(sum==9){
				cnt++;	
			} 
		}
	}while(next_permutation(a,a+9));
	cout<<cnt/2<<endl;
	return 0;
}



记录next_permutation(a,a+n)的用法


版权声明:本文为the_kingdom_of_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。