由于没报名,只能靠别人发的截图来做了
我的思路:全排列,判断加号位置,判断/位置,看是否存在这个相等的
时间复杂度较高,在10e8左右
代码:
#include#include #include #include #include using namespace std;int main(){ int n; cin>>n; int sum=0; int ans[9]={1,2,3,4,5,6,7,8,9}; for(int t=1;t<6;t++) { for(int j=t+1;j<9;j++) { long long int sum1=0; long long int sum2=0; long long int sum3=0; for(int k=0;k<=t;k++) { sum1+=ans[k]*pow(10,t-k); } for(int k=t+1;k<=j;k++) { sum2+=ans[k]*pow(10,j-k); } for(int k=j+1;k<9;k++) { sum3+=ans[k]*pow(10,8-k); } if(sum1*1.0+sum2*1.0/sum3==n) { sum++; } } } while(next_permutation(ans,ans+9)) { for(int t=0;t<6;t++) { for(int j=t+1;j<9;j++) { int sum1=0; int sum2=0; int sum3=0; for(int k=0;k<=t;k++) { sum1+=ans[k]*pow(10,t-k); } for(int k=t+1;k<=j;k++) { sum2+=ans[k]*pow(10,j-k); } for(int k=j+1;k<9;k++) { sum3+=ans[k]*pow(10,8-k); } if(sum1*1.0+sum2*1.0/sum3==n) { sum++; } } } } cout< <