下边两个函数在algorithm中
next_permutation[数组名称+初始起点,数组名称+终止点)//表示下一个全排列
prev_permutation[数组名称+初始起点,数组名称+终止点)//表示前一个全排列
题目说1~9必须使用,所以可以用全排列函数,进行枚举每个排列内容
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
int a[10];
int find(int l,int r)
{
int res=0;
for(int i=l;i<=r;i++)
res=res*10+a[i];
return res;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<9;i++) a[i]=i+1;
int res=0;
do
{
for(int i=0;i<8;i++)
{
for(int j=i+1;j<9;j++)
{
int x=find(0,i);
int y=find(i+1,j);
int z=find(j+1,8);
if((LL)x*z+y==(LL)n*z) res++;
}
}
}while(next_permutation(a,a+9));//表示下一个全排列内容
cout<<res<<endl;
return 0;
}