假设:
S1 = 1
S2 = 12
S3 = 123
S4 = 1234
…
S9 = 123456789
S10 = 1234567891
S11 = 12345678912
…
S18 = 123456789123456789
…
现在我们把所有的串连接起来
S = 1121231234…123456789123456789112345678912…
那么你能告诉我在S串中的第N个数字是多少吗?
Input
输入首先是一个数字K,代表有K次询问。
接下来的K行每行有一个整数N(1 <= N < 2^31)。
Output
对于每个N,输出S中第N个对应的数字.
Sample Input
6
1
2
3
4
5
10
Sample Output
1
1
2
1
2
4
其实第一次做这个题是寒假的时候,当时c语言还没有学好呢,就草草的过了.今天晚上在看这个题,自己结合以前的代码,自己画了画图,确实是那么回事.其实这种方法原来也试过.但是没想到这个题也是用这种方法.先画个图吧.
emmm把图片翻转一下,哈哈.当达到123456789时,后面就不变了,但是还是按这个排下去就好了.代码如下:
#include<iostream>
#define ll long long
using namespace std;
ll n;
int a[9]={9,1,2,3,4,5,6,7,8};
int main()
{
int k;
cin>>k;
while(k--)
{
cin>>n;
ll s=1;
while(n>s)
{
n-=s;
s++;
}
cout<<a[n%9]<<endl;
}
}
努力加油a啊,(o)/~