黑龙江大学程序设计竞赛 A Find the Nth Character

版权声明:虽然我依旧蒟蒻,但请你尊重我 :D   ——陈杉菜 https://blog.csdn.net/qq_44702847/article/details/89527184

Find the Nth Character

链接:https://ac.nowcoder.com/acm/contest/877/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

Mr Cheng今天在给HLJU的同学们上程序算法课的时候出了一道找规律的题目,题目表述如下
假设:

S1=a
S2=ab
S3=abc
S4=abcd
……
S26=abcdefghijklmnopqrstuvwxyz
S27=abcdefghijklmnopqrstuvwxyza
S28=abcdefghijklmnopqrstuvwxyzab
……
S52=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
……

现在Mr Cheng要求上课的同学们把所有的串依次连接起来,于是得到:
S=aababcabcdabcde……
那么你能告诉Mr Cheng在S串中的第N个字母是多少吗?

输入描述:

输入首先是一个数字K,代表有K次询问

接下来的K行每行有一个N整数

输出描述:

对于每次询问,输出S串中第N个位置对应的字母。

示例1
输入

6
1
2
3
4
5
10

输出

a
a
b
a
b
d

大声BB

本来以为是签到题,本来就想签个到,
没想到,花了一个多小时。哭唧唧












难,
可能是走的路太少,踩得坑太浅,对大多数人来说,可能就是要注意取余,
不过我的问题好像是内存超限来着的,提交了好多次,一直没发现,后来改了一下数组大小,A了

贴代码

#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<ctype.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<iomanip>
#include<list>
#include<fstream>
using namespace std;
typedef long long ll;
int f[20010];
void first(){
    int num=1;
    int index=1;
    int sum=0;
    for(int i=1;sum<=10000;i++){
        num=1;
        for(int j=1;j<=i;j++){
            f[index++]=num++;
            if(num>26) num=1;
        }
        sum+=i;
    }
}
 
int main(){
    int k;
    int n;
    scanf("%d",&k);
    first();
    while(k--){
        scanf("%d",&n);
        printf("%c\n",f[n]+'a'-1);
    }
     
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44702847/article/details/89527184