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;
}
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 阅读



