阿里笔试 盒马笔试 盒马秋招 1018

笔试时间:2025年10月18日

往年笔试合集:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题

小红正在数偶数:0,2,4,6,8,10,12,……,并将这些数依次拼接成一个无穷长的字符串"0246810121416···"。现给定一个正整数n,请你确定该字符串的第n个字符是什么(下标从1开始)。

输入描述

在一行上输入一个整数n(1≤n≤10^9)。

输出描述

在一行上输出一个字符,表示该字符串的第n个字符。

样例输入

6

样例输出

1

在这个样例中,字符串前6个字符为"024681",因此第6个字符是"1"。

参考题解

解题思路:

  1. 偶数序列中的每个数字长度不同: 个位数偶数(0, 2, 4, 6, 8)长度为1两位数偶数(10, 12, 14, ...)长度为2三位数偶数(100, 102, ...)长度为3,依此类推
  2. 我们需要找到包含第n个字符的那个偶数: 从最小的偶数0开始,依次累加每个偶数的长度当累加长度 ≥ n时,说明第n个字符就在当前这个偶数中

C++:

#include <iostream>
#include <string>
using namespace std;

void solve() {
    int n;
    cin >> n;
    
    string s = "";
    int k = 0;
    int total_len = 0;
    
    while (total_len < n) {
        string even_str = to_string(2 * k);
        s += even_str;
        total_len += even_str.length();
        k++;
    }
    
    cout << s[n - 1] << endl;
}

int main() {
    solve();
    return 0;
}

Java:

import java.util.Scanner;

public class Main {
    public static void solve() {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        
        StringBuilder s = new StringBuilder();
        int k = 0;
        int totalLen = 0;
        
        while (totalLen < n) {
            String evenStr = String.valueOf(2 * k);
            s.append(evenStr);
            totalLen += evenStr.length();
            k++;
        }
        
        System.out.println(s.charAt(n - 1));
    }
    
    public static void main(String[] args) {
        solve();
    }
}

Python:

import sys

def solve():
    n = int(sys.stdin.readline().strip())
    parts = []
    k = 0
    total_len = 0
    while total_len < n:
        even_str = str(2 * k)
        parts.append(even_str)
        total_len += len(even_str)
        k += 1
    s = "".join(parts)
    print(s[n - 1])

solve()

第二题

小红有一个仅包含n个字符'a'的字符串,你需要对这个字符串进行操作,每次操作需要将一个字母改为另一个与它不同的小写字母。小红想知道在进行恰好m次操作后,可能会有多少种不同的字符串?由于这个答案可能很大,因此需要将答案对10^9+7取模。

输入描述

两个正整数n和m(1≤n,m≤10^5

输出描述

一个整数。

样例输入

3 1

样例输出

75

样例说明:必须修改一次,有3个位置可以修改,每个位置可以改成除了'a'以外的任意字符,共有25种方式。因此答案是3×25=75。

参考题解

解题思路:

  1. 问题转化:初始全是'a',每次操作必须改成其他字母(有25种选择)。最终字符串中,被修改过的位置可以是任意非'a'的字母(26个字母中除去'a',有25种选择),且

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

昨天 11:08
已编辑
上海大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务