凑算式
B DEF
A + — + -——— = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
B DEF
A + — + -——— = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
直接暴力生成9的全排列然后去验证等式是否成立,只是验证的时候如果防止精度问题可以通分把除法变成乘法。
答案是:29
#include<iostream> using namespace std; int ans=0; bool vis[10]; int num[9]; void solve(){ if((num[0]+(double)num[1]/num[2]+(double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]))==10) ans++; return; } void dfs(int d){ if(d==9){ solve(); return; } for(int i=1;i<10;i++){ if(!vis[i]){ vis[i]=true; num[d]=i; dfs(d+1); vis[i]=false; } } } int main(){ dfs(0); cout<<ans<<endl; return 0; }