美团4.1编程题
第一题 前缀和 100%
#include <bits/stdc++.h> using namespace std; int main(void){ double nums[50005]; double sums[50005]; int n = 0; cin>>n; for(int i = 0;i < n;i ++){ scanf("%lf",&nums[i]); } sums[0] = nums[0]; for(int i = 1;i<n;i++){ sums[i]=sums[i-1]+nums[i]; } int m = 0; cin>>m; int ii = 0; int flag = 0; while(m --){ int index = 0; string op; cin>>index>>op; double result = 0; double tmp = 0; if(op=="+"){ tmp = nums[index-1]+nums[index]; } else if(op=="-"){ tmp = nums[index-1]-nums[index]; } else if(op=="*"){ tmp = nums[index-1]*nums[index]; } else if(op=="/"){ tmp = nums[index-1]/nums[index]; } if(index!=1&&index!=n-1){ double f = sums[index-2]; double b = sums[n-1]-sums[index]; result = f+tmp+b; } else if(index==1){ result = tmp+(sums[n-1]-sums[index]); } else if(index==n-1){ result = tmp+sums[index-2]; } if(flag++) cout<<" "; printf("%.1f",result); } return 0; }
第二题:模拟 100%
#include <bits/stdc++.h> using namespace std; int main(void){ int n = 0; vector <double> nums; int i = 0; cin>>n; while(n--){ double tmp = 0; cin>>tmp; nums.push_back(tmp); } sort(nums.begin(),nums.end()); vector<double>::iterator it; double result = 0; for(it = nums.begin();it!=nums.end();it++){ result+=fabs((*it)-(*(it+1))); } printf("%.0f",result); return 0; }
第三题 模拟100%
#include <bits/stdc++.h> using namespace std; int main(void){ int a[50005]; int sum[50005]; int op[50005]; int x[50005]; int y[50005]; int flag = 0; int n,m; cin>>n>>m; for(int i = 0;i<m;i++){ cin>>op[i]; } for(int i = 0;i<m;i++){ cin>>x[i]; } for(int i = 0;i<m;i++){ cin>>y[i]; } for(int i = 0;i<m;i++){ if(op[i]==0){ a[x[i]-1] = y[i]; } else if(op[i]==1){ int total = 0; for(int ii = x[i]-1;ii<y[i];ii++){ total += a[ii]; } if(flag++) cout<<" "; printf("%d",total); } } return 0; }
第四第五题不会写,也不知道有没有面试机会