美团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;
}

第四第五题不会写,也不知道有没有面试机会

全部评论
时间是几个小时啊?
点赞 回复 分享
发布于 2023-04-02 11:45 辽宁
美团笔试分批吗?我没有收到
点赞 回复 分享
发布于 2023-04-02 11:42 安徽

相关推荐

投递米哈游等公司10个岗位
点赞 评论 收藏
分享
学一下吧现在太菜了:和简历没关系,你是清华的他就要了。多投投就行了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务