1 条题解
-
0
📝 题目大意
给定整数 和 ,构造一个由 个
A、 个B、……、 个Z依次拼接而成的字符串,求该字符串的第 个字符。💡 解题思路
- 题目分析:字符串结构非常有规律——每个字母连续出现 次,共 个字母,总长度 。,直接模拟也能过,但数学推导更简洁。
- 算法推导:
- 将第 个字符( 索引)转换为 索引,即
pos = X - 1。 - 每个字母占据一个长度为 的"块",所以
pos / N便是该字符属于第几个字母块( 对应A, 对应B,……, 对应Z)。 - 最终答案即为
'A' + (X - 1) / N。
- 将第 个字符( 索引)转换为 索引,即
- 边界与细节:
- 最大为 ,此时
(X-1)/N = 25,对应'Z',不会越界。 - 整数除法自动向下取整,恰好符合分块逻辑,无需额外处理。
- 最大为 ,此时
⏱️ 复杂度分析
- 时间复杂度:
- 空间复杂度:
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main(){ int n, x; cin >> n >> x; // 将 1 索引转为 0 索引,除以 N 得到字母块的编号(0->A, 1->B, ..., 25->Z) int index = (x - 1) / n; char ans = 'A' + index; cout << ans << endl; return 0; }
- 1
信息
- ID
- 602
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者