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秋招各大笔试题汇总,c++,java,python多种语言分析,解答。
