暴力求解(利用next_permutation)
对1-9全排列,八个间隔的位置找两个位置放挡板,从而形成a,b,c三个数,然后判断等式是否成立即可
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int num[9]={1,2,3,4,5,6,7,8,9};
int a,b,c;
int ans=0;
int main(){
cin>>n;
do{
for(int i=0;i<=6;i++){
for(int j=i+1;j<=7;j++){
a=0;
b=0;
c=0;
for(int p1=0;p1<=i;p1++){
a*=10;
a+=num[p1];
}
for(int p2=i+1;p2<=j;p2++){
b*=10;
b+=num[p2];
}
for(int p3=j+1;p3<=8;p3++){
c*=10;
c+=num[p3];
}
if(b%c==0 && a+b/c==n){
//cout<<a<<' '<<b<<' '<<c<<endl;
ans++;
}
}
}
}while(next_permutation(num,num+9));
cout<<ans<<endl;
return 0;
}
这个思想厉害,不愧是学姐
爱了