京东笔试 京东笔试题 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多种语言版本,持续更新中。