解题思路:
1.对1~9进行全排列;
2.经由分析,结果只能为4位数(等号左边),等号右边有两种情况(1位数*4位数)或者(2位数*3位数);
3.对每种情况进行判断。
参考思路:http://www.dotcpp.com/blog/56469.html
源码附上:
#include <iostream>
#include <algorithm>
using namespace std;
int A[]={1,2,3,4,5,6,7,8,9};
int change(int a,int b)
{
int num=0;
for(int i=a;i<=b;i++)
{
num=num*10+A[i];
}
return num;
}
void judge(int A[])
{
int left=change(0,3);
for(int i=4;i<=5;i++)
{
int right1=change(4,i);
int right2=change(i+1,8);
if(left==right1*right2)
{
cout<<left<<" = "<<right1<<" x "<<right2<<endl;
}
}
}
int main()
{
do{
judge(A);
}while(next_permutation(A,A+9));
return 0;
}
本文介绍了一道使用1到9数字全排列的数学题目,通过编程方式寻找符合条件的等式,即左侧四位数等于右侧一乘四或二乘三的乘积。代码采用C++实现,利用全排列算法遍历所有可能组合,并通过自定义函数转换数字数组为整数,最终输出符合条件的等式。
714

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



