藍橋校內選拔賽B題(不一定正確)
阿新 • • 發佈:2019-01-06
由於沒報名,只能靠別人發的截圖來做了
我的思路:全排列,判斷加號位置,判斷/位置,看是否存在這個相等的
時間複雜度較高,在10e8左右
程式碼:
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath> 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<<sum<<endl; return 0; }