京东笔试 京东笔试题 0824
笔试时间:2024年08月24日 秋招
历史笔试传送门:2023秋招笔试合集
第一题
题目
给你一个整数,请你判断0~N之间有多少个数是100的正整数倍。
输入描述
输入的第一行给出一个整数N
输出描述
输出0~N之间有多少个数是100的整数倍。
样例输入
2000
样例输出
20
参考题解
答案为N整除100,注意负数。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream>
#include <cstring>
using namespace std;
char st[1005];
int main() {
cin >> st;
int n = strlen(st);
if (n <= 2 || st[0] == '-') {
cout << "0";
return 0;
}
for (int i = 0; i < n - 2; i++)
cout << st[i];
}
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String st = scanner.nextLine();
int n = st.length();
if (n <= 2 || st.charAt(0) == '-') {
System.out.print("0");
} else {
System.out.print(st.substring(0, n - 2));
}
scanner.close();
}
}
Python:[此代码未进行大量数据的测试,仅供参考]
st = input()
n = len(st)
if n <= 2 or st[0] == '-':
print("0")
else:
print(st[:-2])
第二题
题目
给定一个大小为n * m 的网格板,网格板是由n * m个1x1的单元格组成,最初所有的单元格是白色的;现在给出k个操作:c x y将位置为(x,y)的单元格涂成黑色。l x y从位置为(x,y)的单元格向左寻找最先出现的白色单元格(不包含(x,y)),并输出其坐标;r x y从位置为(x,y)的单元格向右寻找最先出现的白色单元格(不包含(x,y)),并输出其坐标u x y从位置为(x,y)的单元格向上寻找最先出现的白色单元格(不包含(x,y)),并输出其坐标;d x y从位置为(x,y)的单元格向下寻找最先出现的白色单元格(不包含(x,y)),并输出其坐标
注:网格板的左上角的单元格坐标为(1,1)
输入描述
第一行给出正整数n,m,k;代表网格板的大小以及操作的次数;
随后k行,每行一个操作命令格式为si, xi, yi.si中仅包含l r u d.1≤n,m<=100; 1<=k<=10^4,1<x_i<n,l≤y_i< m
输出描述
对于以l r u d的命令,每行输出对应的操作后的坐标。若没有这样的坐标,输出-1。
样例输入
5 5 20
c 2 4
c 4 2
r 3 5
c 4 4
c 5 2
u 5 2
c 3 2
c 1 4
l 4 4
c 3 5
c 5 3
c 3 3
c 3 1
u 1 4
c 3 4
r 1 1
d 3 3
d 3 4
c 1 1
c 5 4
样例输出
-1
3 2
4 3
-1
1 2
4 3
5 4
参考题解
模拟。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream>
using namespace std;
bool a[105][105];
int n, m;
void find(int x, int y, int d1, int d2) {
x += d1;
y += d2;
while (y >= 1 && y <= m && x >= 1 && x <= m) {
if (!a[x][y]) {
cout << x << " " << y << endl;
return;
}
x += d1;
y += d2;
}
cout << -1 << endl;
}
int main() {
int k;
cin >> n >> m >> k;
while (k--) {
char op[5];
int x, y;
cin >> op >> x >> y;
int d1 = 0, d2 = 0;
if (op[0] == 'c') {
a[x][y] = 1;
continue;
}
switch (op[0]) {
case 'l': d2 = -1; break;
case 'r': d2 = 1; break;
case 'u': d1 = -1; break;
case 'd': d1 = 1; break;
}
x += d1;
y += d2;
bool flag = false;
while (y >= 1 && y <= m && x >= 1 && x <= m) {
if (!a[x][y]) {
cout << x << " " << y << endl;
flag = true;
break;
}
x += d1;
y += d2;
}
if (!flag) cout << -1 << endl;
}
}
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner;
public class Main {
static boolean[][] a = new boolean[105][105];
static int n, m;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
int k = scanner.nextInt();
while (k-- > 0) {
String op = scanner.next();
int
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。
查看11道真题和解析
