2023 oppo笔试题 提前批 0715

笔试时间:2023年7月15日 春招实习

第一题

题目:构造二阶行列式

小欧希望你构造一个二阶行列式,满足行列式中每个数均为不超过20的正整数,且行列式的值恰好等于x。你能帮帮她吗?

输入描述

一个正整数x。-1000<=x<=1000

输出描述

如果无解,请输出-1。否则输出任意合法行列式即可(输出两行,每行输出两个不超过20的正整数)。

样例输入

2

样例输出

3 2

5 4

参考题解

模拟题。

由于每一个数字不得超过20,因此可以直接枚举。

C++:

#include <iostream>

using namespace std;

int main() {
    int x;
    cin >> x;

    for (int a = 1; a <= 20; a++) {
        for (int b = 1; b <= 20; b++) {
            for (int c = 1; c <= 20; c++) {
                for (int d = 1; d <= 20; d++) {
                    if (a * d - b * c == x) {
                        cout << a << " " << b << endl;
                        cout << c << " " << d << endl;
                        return 0;
                    }
                }
            }
        }
    }

    cout << -1 << endl;

    return 0;
}

Java:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();

        for (int a = 1; a <= 20; a++) {

            for (int b = 1; b <= 20; b++) {

                for (int c = 1; c <= 20; c++) {

                    for (int d = 1; d <= 20; d++) {
                        if (a * d - b*c == x) {
                            System.out.println(a + " " + b);
                            System.out.println(c + " " + d);
                            return;
                        }
                    }

                }

            }

        }

        System.out.println(-1);

    }

}

Python:

x = int(input())

for a in range(1, 21):
    for b in range(1, 21):
        for c in range(1, 21):
            for d in range(1, 21):
                if a * d - b * c == x:
                    print(a, b)
                    print(c, d)
                    exit()

print(-1)

第二题

题目:挑战boss

小欧正在一个回合制格斗游戏中挑战一个boss。已知游戏的0/3机制如下:

每回合小欧先手攻击boss,然后boss攻击小欧,此时1回合结束。小欧有时可以闪避boss的攻击,当闪避成功时这回合将不受boss的伤害。

小欧攻击boss时可以攒“连击点”,她攻击造成的伤害为a+kb,其中a为基础攻击力,b为基础连击伤害,k为连击次数。小欧每次攻击后会让连击次数加1,但当受到boss的伤害后会重置连击次数为0。

小欧想知道,她最终共对boss造成了多少伤害?

输入描述

第一行输入三个正整数n,a,b,代表回合的数量,小欧基础攻击力,小欧的基础连击伤害。

第二行输入一个长度为n的字符串,字符串仅由o和x组成,其中o代表本回合闪避成功,x代表本回合闪避失败。

1<=n,a,b<=10^5

输出描述

一个正整数,代表小欧造成的伤害总和。

样例输入

3 5 2

oxo

样例输出

1

第一回合攻击,连击次数为0,造成5点伤害。攻击后连击次数变成1。小欧闪避成功。

第二回合攻击,连击次数为1,造成7点伤害。攻击后连击次数变成2.小欧闪避失败,连击次数为0。

第三回合攻击,连击次数为0,造成5点伤害。攻击后连击次数变成1。小欧闪避成功。

总共造成17点伤害。

参考题解

模拟题。

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

C++:

#include <iostream>
#include <string>

using namespace std;

int main() {
    

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

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

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

全部评论

相关推荐

04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
嘀哩咕噜说啥呢:27届,这简历,强的逆天,大厂实习随便冲,面经多少看点,hot100刷完,大厂随便挑了
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客企业服务