AcWing 1209. 带分数
原题链接
简单
作者:
fwy68668
,
2024-04-09 18:44:25
,
所有人可见
,
阅读 2
#include <bits/stdc++.h>
using namespace std;
const int N=1000010;
int p[N],k,ans;
int st[N];
int ds(int l,int r)
{
long long res=0;
for(int i=l;i<=r;i++)
{
res=res*10+p[i];
}
return res;
}
int dfs(int u)
{
if(u>9)
{
for(int i=1;i<=7;i++)
for(int j=i+1;j<=8;j++)
{
long long x=ds(1,i);
long long y=ds(i+1,j);
long long z=ds(j+1,9);
if(x*z+y==k*z) ans++;
}
}
for(int i=1;i<=9;i++)
{
if(!st[i])
{
st[i]=true;
p[u]=i;
dfs(u+1);
st[i]=false;
}
}
}
int main()
{
cin>>k;
dfs(1);
cout<<ans;
}