2023 oppo笔试题 提前批 0802

笔试时间:2023年8月02日 提前批

第一题

题目:构造二阶行列式

小欧拿到了一个数组,她有q次操作,每次操作修改一个元素。小欧希望每次修改后得到当前数组所有元素之和。你能帮帮她吗?

输入描述

第一行输入两个正整数n和q,代表数组的大小和操作次数。第二行输入n个正整数ai,代表小欧拿到的初始数组。接下来的q行,每行输入两个正整数i和x,代表将第i个元素修改为x。

输出描述

输出行,每行输入一个正整数,代表当前数组元素之和。

样例输入

5 3

1 2 3 4 5

2 3

3 3

5 1

样例输出

16

16

12

第一次修改后,数组变成[1,3,3,4,5],元素之和为16。

第二次修改后,数组变成[1,3,3,4,5],元素之和为16。

第三次修改后,数组变成[1,3,3,4,1],元素之和为12。

参考题解

模拟题。

C++:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n,q;
    cin >> n >> q;
    vector<int> a(n,0);
    long long sum = 0 ;
    for (int i = 0 ;i < n ; i++) {
        cin >> a[i];
        sum += a[i];
    }

    for (int i = 0 ; i < q; i++) {
        int I, x;
        cin >> I >> x;
        sum += x - a[I-1];
        a[I-1] = x;
        cout << sum << endl;
    }

}

Java:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int q = sc.nextInt();
        int[] a = new int[n];
        long sum = 0;

        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
            sum += a[i];
        }

        for (int i = 0; i < q; i++) {
            int I = sc.nextInt();
            int x = sc.nextInt();
            sum += x - a[I - 1];
            a[I - 1] = x;
            System.out.println(sum);
        }
    }
}

Python:

n, q = map(int, input().split())
a = list(map(int, input().split()))
sum_val = sum(a)

for _ in range(q):
    I, x = map(int, input().split())
    sum_val += x - a[I - 1]
    a[I - 1] = x
    print(sum_val)

第二题

题目:小欧的圆覆盖

在平面直角坐标系上有一个矩形,和一个定点P。小欧希望以点P为圆心画一个圆覆盖这个矩形,请你求出圆面积的最小值。注:π取3.1415926536

输入描述

第一行输入四个整数 x1,x2,y1,y2代表矩形左下角坐标为(x1,y1),右上角坐标为(x2,y2)。第二行输入两个整数 (xp,yp),代表点P的坐标。

输出描述

一个浮点数,代表圆的最小面积。如果你的答案和标准答案的相对误差不超过10^-4,则认为你的答案正确。

样例输入

0 0 1 1

0 0

样例输出

6.2831853

枚举圆心到矩形的四个顶点的距离,取最大值x,x即是最后的圆的半径,套公式求解即可。

参考题解

模拟题。

根据题意,不断地更新连击次数,累加总的伤害值即可。

C++:

#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;

double get_dis(int x1,int y1, int x2, int y2) {
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}

int main() {
    int x1,y1,x2,y2;
    cin >> x1 >> y1 >> x2 >> y2;
    int xp, yp;
    cin >> xp >> yp;

    double radio = max({get_dis(x1, y1, xp, yp), get_dis(x2, y2, xp, yp), get_dis(x2, y1, xp, yp),get_dis(x1, y2, xp, yp)});

    cout << 3.1415926536 * radio * radio << endl;

}

Java:

import java.ut

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
2
10
分享

创作者周榜

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