如题:
观察如下的算式
9213 x 85674 = 789314562
左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。
而乘积恰好也是用到了1~9的所有数字,并且每个1次。
请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?
注意:
- 总数目包含题目给出的那个示例。
- 乘数和被乘数交换后作为同一方案来看待。
#include<bits/stdc++.h>
using namespace std;
int bei[10];//备用
map<long long,int>mp;//
int main()
{
int a[9]={1,2,3,4,5,6,7,8,9};
int res=0;
do
{
for(int i=1;i<9;i++)
{
memset(bei,0,sizeof(bei));//分配空间
long long int ans,left=0,right=0,t=0,x=0,y=0;
for(int j=0;j<=i;j++)
{
left=left*10+a[j];
}
x=left;
x=x*10;
for(int k=i+1;k<9;k++)
{
right=right*10+a[k];
x=x*10+a[k];
}
y=right;
y=y*10;
for(int j=0;j<=i;j++)
y=y*10+a[j];
ans=left*right;
long long int ff=ans;
while(ans>0)
{
int x=ans%10;
ans=ans/10;
if(bei[x]==0&&x!=0)
{
bei[x]=1;
t++;
}
}
if(t==9&&mp.count(x)==0&&mp.count(y)==0)
{
res++;
mp[x]=1;
mp[y]=1;
}
}
}while(next_permutation(a,a+9));//全排列
cout<<res<<endl;
return 0;
}

答案:1625
该博客探讨了一个计算问题,即找到所有使用1到9的数字组成乘数和被乘数,使得乘积也由这9个数字组成且每个数字出现一次。通过全排列算法,代码实现了查找满足条件的组合数量,最终得出答案为1625种。

被折叠的 条评论
为什么被折叠?



