题目:1209. 带分数
思路:对1-9的排列进行枚举,最外层是9!,里面再加两层循环,分类1-9的排列,然后看看能否为n即可
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+10;
int n;
int a[10];
int main(){
cin>>n;
for(int i=1;i<=9;i++)
a[i]=i;
LL ans=0;
do{
for(int i=2;i<9;i++){
int x=0;
for(int j=1;j<i;j++)
x=x*10+a[j];
for(int j=i+1;j<=9;j++){
int y=0;
for(int k=i;k<j;k++){
y=y*10+a[k];
}
int z=0;
for(int k=j;k<=9;k++){
z=z*10+a[k];
}
if(n*z==x*z+y) ans++;
}
}
}while(next_permutation(a+1,a+10));
printf("%lld",ans);
return 0;
}