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