问题描述
观察如下的算式:
9213 x 85674 = 789314562
左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。
而乘积恰好也是用到了1~9的所有数字,并且每个1次。
请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?
注意:
- 总数目包含题目给出的那个示例。
- 乘数和被乘数交换后作为同一方案来看待。
输入
没有输入
输出
一个整数。
提示
把答案放在输出语句中输出,例如C/C++语言可以用printf或cout。
输出结果:1625
思路:
1.生成数字1~9的全排列
2.在每一次新生成的全排列中插入乘号
3.统计出乘数(乘号前)/n1 被乘数(乘号后)/n2 返回乘积结果(num)
4.分离num的每个位数数字存放在数组b,并且统计出出现次数存放到数组c中
5.进行排除检查
6.注意最后结果除以2,因为乘数,被乘数是可以交换位置的
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
int ans=0; //存储可实现的算术式
int num=0; //存储等式右边的相乘结果
int b[9]; //用来存num的每一位数字
int c[10]; //用来检查b数组中1~9出现的次数
int Insert(int *a,int pos