华为OD机试 2023B卷题库疯狂收录中,刷题点这里
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
绘图机器的绘图笔初始位置在原点(0,0)。
机器启动后,其绘图笔按下面规则绘制直线:
给定了横坐标终点值E,以及若干条绘制指令。
请计算绘制的直线和横坐标轴,以及X-E的直线组成图形的面积。
第一行输入两个正整数N、E。
接下来的N行输入两个正整数,表示指令X offsetY。
用例保证横坐标X以递增排序方式出现,且不会出现相同横坐标。
取值范围:
一个整数,表示计算得到的面积。
package com.guor.od;
import java.util.*;
public class OdTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
// 多少条指令
int N = arr[0];
// 横坐标终点值
int E = arr[1];
int area = 0;
// X轴偏移量
int xSkew = 0;
// Y轴偏移量
int ySkew = 0;
// 接下来的N行输入两个正整数,表示指令X offsetY。
for (int i = 0; i < N; ++i) {
// 指令X offsetY
String[] commands = sc.nextLine().split(" ");
// 横坐标X
int X = Integer.parseInt(commands[0]);
// X轴坐标 * Y轴坐标计算面积
area += Math.abs(ySkew) * (X - xSkew);
// 叠加Y轴偏移量
ySkew += Integer.parseInt(commands[1]);
// 重置横坐标X
xSkew = X;
}
// 叠加面积(横坐标终点值 - 当前横坐标) * Y轴坐标
area += (E - xSkew) * ySkew;
System.out.println(area);
}
}
5 8
1 1
2 2
3 -1
4 -2
5 1
9
下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。