小黑黑上课的时候走神儿,鬼使神差的就想到了这么一个问题,假如:
S1=a
S2=ab
S3=abc
S4=abcd
......
S26=abcdefghijklmnopqrstuvwxyz
S27=abcdefghijklmnopqrstuvwxyza
S28=abcdefghijklmnopqrstuvwxyzab
......
S52=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
要是把所有的串依次连接起来,不就得到了
S=aababcabcdabcdeabcdef......
现在小黑黑想知道这个串里的第N个字母是多少,你能告诉他嘛?
输入格式:
输入首先是一个数字 K,代表有K次询问.
接下来的 K 行每行有一个整数 N.
对 K 保证有(1≤K≤1000)。
对 N 保证有(1≤N≤10000)。
输出格式:
对于每次询问,输出串中第个 N 位置对应的字母。
输入样例:
6
1
2
3
4
5
10
输出样例:
a
a
b
a
b
d
作者: 小黑
单位: 临沂大学
时间限制: 1000 ms
内存限制: 256 MB
#include<bits/stdc++.h>
#define int long long
using namespace std;
char q[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
signed main()
{
int n,cnt=0;
cin>>n;
char a[1000010];
for(int i=1;i<=1000;i++)
{
for(int j=1;j<=i;j++)
{
if(j%26==0)
{
a[++cnt]=q[25];
}
else
{
a[++cnt]=q[j%26]-1;
}
}
}
for(int i=1;i<=n;i++)
{
int k;
cin>>k;
cout<<a[k]<<endl;
}
return 0;
}