POJ 1019 Number Sequence
2017-08-18 20:32
465 查看
Number Sequence
DescriptionA single positive integer i is given. Write a program to find the digit located in the position i in the sequence of number groups S1S2...Sk. Each group Sk consists of a sequence of positive integer numbers ranging from 1 to k, written one after another. For example, the first 80 digits of the sequence are as follows: 11212312341234512345612345671234567812345678912345678910123456789101112345678910InputThe first line of the input file contains a single integer t (1 ≤ t ≤ 10), the number of test cases, followed by one line for each test case. The line for a test case contains the single integer i (1 ≤ i ≤ 2147483647)OutputThere should be one output line per test case containing the digit located in the position i.Sample Input
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 40208 | Accepted: 11694 |
2 8 3Sample Output
2 2
题意很容易理解
思路:将1 12 123 1234 。。。12345。。N分成n段分别记录他们的长度len【】和到这里的长度sum【】
注意 从10到99的数的长度为2 从100到999长度 为3//用到一个len【i】=len【i-1】+(int)log10((double)i)+1;
对于每一个数,例如8 我们可以找到他在 第4段 找到他在该段的位置 为2。
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#define N 40000long long len,sum;void init(){for(int i=1;i<N;i++){len[i]=len[i-1]+(int)log10((double)i)+1;sum[i]=sum[i-1]+len[i];}}int doit(int x){int i,j;while(sum[i]<x){i++;}x-=sum[i-1];//下边的pos和x是不一样的
int llen=0;for(i=1;llen<x;i++){llen+=(int)log10((double)i)+1;}int pos=llen-x;//这里的pos和x不同因为10—99为2;return (i-1)/(int)pow((double)10,pos)%10;}int main(){init();/*for(int i=1;i<=100;i++){printf("%d %d\n",len[i],sum[i]);}*/int ccase;scanf("%d",&ccase);while(ccase--){int n;scanf("%d",&n);int ans=doit(n);printf("%d\n",ans);}return 0;}
相关文章推荐
- poj1019 Number Sequence 二分+数学+打表
- POJ 1019 Number Sequence(水~)
- [poj 1019] Number Sequence 数学 想法题
- POJ 1019 Number Sequence (规律题)
- poj1019 Number Sequence
- 排列组合:poj 1019 Number Sequence
- poj1019——Number Sequence(数学)
- POJ 1019 Number Sequence (循环递增序列的的第K个值)
- Poj 1019 Number Sequence( 数据分析和操作)
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- POJ 1019 Number Sequence (二分查找+暴力打表)
- POJ 1019 Number Sequence
- 未懂 POJ 1019 Number Sequence
- POJ 1019:Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- poj 1019 Number Sequence
- Poj 1019 Number Sequence( 数据分析和操作)