AcWing 1209. 带分数
原题链接
简单
作者:
白小黑
,
2023-11-17 12:22:05
,
所有人可见
,
阅读 50
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int sum=0;
int target,path[10],state[10];
int get(int l,int r){
int res=0;
for(int i=l;i<=r;i++){
res=res*10+path[i];
}
return res;
}
void dfs(int x){
if(x==9){
for(int i=0;i<7;i++){
for(int j=i+1;j<8;j++){
int a=get(0,i);
int b=get(i+1,j);
int c=get(j+1,8);
if(a*c+b==target*c){
sum++;
}
}
}
return ;
}
for(int i=1;i<=9;i++){
if(!state[i]){
path[x]=i;
state[i]=1;
dfs(x+1);
state[i]=0;
}
}
}
int main()
{
cin>>target;
dfs(0);
cout<<sum;
return 0;
}