find the nth digit

题目:

find the nth digit

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 689 Accepted Submission(s): 244

Problem Description

假设:S1 = 1S2 = 12S3 = 123S4 = 1234………S9 = 123456789S10 = 1234567891S11 = 12345678912…………S18 = 123456789123456789………………现在我们把所有的串连接起来S = 1121231234…….123456789123456789112345678912………那么你能告诉我在S串中的第N个数字是多少吗?

Input

输入首先是一个数字K,代表有K次询问。接下来的K行每行有一个整数N(1 <= N < 2^31)。

Output

对于每个N,输出S中第N个对应的数字.

Sample Input

61234510

Sample Output

112124

Author

8600

Source

HDU 2007-Spring Programming Contest – Warm Up (1)

Recommend

8600

题目分析:

S串由1 12 123 1234 12345…..这样的序列组成。求S串中第n个位置上的数字是什么。这道题可以先确定第n个位置在第几数字串,然后在求在这个数字串中的第几个位置。

代码如下:

/* * e.cpp * * Created on: 2015年2月16日 *Author: Administrator */#include <iostream>#include <cstdio>using namespace std;int main(){int t;scanf("%d",&t);while(t–){int n;scanf("%d",&n);int a = 1;//a表示当前串s的数字的个数while(n > a){//如果第n个位置不在当前串中n -= a;//则将n减去当前串所包含的数字的个数a++;//计算下一个串的数字的个数}//执行到这里的时候,说明第n个位置在当前串s中n %= 9;//因为每一个都是在串1~9之间循环if(n == 0){//用于处理一下n==9的时候n = 9;}printf("%d\n",n);}return 0;}

,然后拍一些美得想哭的照片,留给老年的自己。

find the nth digit

相关文章:

你感兴趣的文章:

标签云: