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多种语言分析,解答。

全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
2
10
分享

创作者周榜

更多
牛客网
牛客企业服务