返回题解分享
讨论 / 题解分享/ 帖子详情

凑算式(结果填空) - 题解

1.注意题目描述出错,数字范围是1到9而不是0到9,这东西卡我1个多小时。
2.那个DEF是一个三位数而不是DEF
因为涉及到浮点运算可能会丢失精度,所以我们把除法式子先换成乘法式子(此题中不存在分母为0的情况)

#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[10],ans=0;
bool vis[10]={false};
bool check()
{
int h1=a[3]100+a[4]10+a[5],h2=a[6]100+a[7]10+a[8];
if(a[0]a[2]h2+a[1]h2+h1a[2]==10a[2]h2)
return true;
return false;
}
void dfs(int i)
{
if(i==9)
{
if(check())
ans++;
return;
}
for(int t=1;t<10;t++)
{
if(!vis[t])
{
a[i]=t;
vis[t]=true;
dfs(i+1);
vis[t]=false;
}
}

}
signed main()
{
dfs(0);
cout <<ans<< endl;
return 0;
}
0 回复 0 转发 0 喜欢 7 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!