京东笔试 京东笔试题 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%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

codemelo:终面的一般都是很高级别的,肯定难约😋
点赞 评论 收藏
分享
主页这么好的公司是谁在进啊:虽然很想感谢你的分享,但是此刻的嫉妒和酸气已经涌上心头,所以我撤销一下对你的感谢吧,希望你能原谅我
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务