美团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;
}
第四第五题不会写,也不知道有没有面试机会

