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

全部评论

相关推荐

给我一个offer吧求求啦:轮到大佬给公司发感谢信了,想想就爽
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务