京东笔试 京东笔试题 0315
笔试时间:2025年03月15日
历史笔试传送门:
第一题
题目:数组价值
给你一个长度为n的数组,现在定义这个数组的价值为这个数组中的最大值减去最小值,现在你有一次机会选择其中的任意的一个数将其删除,我们想知道所有可能的选择中,能够得到的n-1个序列的价值最小为多少?
输入描述
对于每一组测试数据,第一行输入一个整数T,代表有T组测试数据。
对于每一组测试数据,先输入一个整数n,代表序列的长度。
接下来输入n个数,代表这个序列中的每一个元素的值。
输出描述
对于每一组测试数据,输出一个答案代表价值的最小值。
样例输入
1
4
1 3 3 7
样例输出
2
说明:
可以删除7,得到的序列为[1,3,3],得到的数组的价值是 2。
参考题解
贪心,因为最后答案只和最小值和最大值有关,因此考虑删除最小值或者最大值。分别对两种情况取较小答案即可。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; ++i) {
int n;
cin >> n;
vector<int> a(n);
for (int j = 0; j < n; ++j) cin >> a[j];
sort(a.begin(), a.end());
int x = a[n - 2] - a[0];
int y = a[n - 1] - a[1];
cout << min(x, y) << endl;
}
return 0;
}
Java:[此代码未进行大量数据的测试,仅供参考]
Python:[此代码未进行大量数据的测试,仅供参考]
第二题
题目:小兴的涂色面积
小兴希望你帮忙计算以下图形的黑色面积。你能帮帮她吗?该图形的生成方式是:第一阶:画一个半径为r的圆,并切掉左上部分的四分之一。
第二阶:在第一阶的内部画一个尽可能大的圆,切掉右下的四分之一,将这一部分涂成白色。
第三阶:将第二阶的新增白色部分的内部画一个尽可能大的圆,切掉四分之一后涂成黑色。
后面以此类推。
输入描述
两个正整数r和n,分别代表初始的圆半径以及图形的阶数。
输出描述
黑色部分的面积。如果你的答案和标准答案的误差不超过10^-6,则认为你的答案正确。
样例输入一
1 1
样例输出一
2.3561945
样例输入二
2 4
样例输出二
7.5103699
参考题解
可以观察出偶数次会使黑色面积减小,奇数次会使黑色面积增大,并且每次圆的半径会缩小一半。使用acos(-1.0)得到pi,按照次数模拟即可。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
int main() {
double r;
int n;
cin >> r >> n;
double total = pi * r * r * 3 / 4;
for (int i = 2; i <= n; ++i) {
r = r / 2;
double m = pi * r * r;
if (i % 2 == 0) {
total -= m * 3 / 4;
} else {
total += m * 3 / 4;
}
}
cout << fixed << setprecision(7) << total << endl;
return 0;
}
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner;
public class CircleAreaPattern {
public static void main(String[] args) {
final double pi = Math.acos(-1.0);
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南
