全排列-九数运算

该博客讨论了一个数学问题,即寻找所有使用1到9的数字,每个数字恰好使用一次,组成的乘法算式,使得乘积同样使用了1到9的数字,每个数字也恰好使用一次。通过生成数字的全排列,插入乘号并计算乘积,博主找到了满足条件的算式总数,结果为1625。解决方案包括生成全排列、统计数字出现次数和进行排除检查。由于乘数和被乘数可互换,最终结果除以2。
摘要由CSDN通过智能技术生成

问题描述
观察如下的算式:

9213 x 85674 = 789314562

左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。
而乘积恰好也是用到了1~9的所有数字,并且每个1次。

请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?

注意:

  1. 总数目包含题目给出的那个示例。
  2. 乘数和被乘数交换后作为同一方案来看待。

输入
没有输入

输出
一个整数。

提示
把答案放在输出语句中输出,例如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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值