POJ 1019 Number Sequence
来源:互联网 发布:柠檬网络电视tv免费版 编辑:程序博客网 时间:2024/06/18 10:50
Number Sequence
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 40208 Accepted: 11694
Description
A 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:
11212312341234512345612345671234567812345678912345678910123456789101112345678910
For example, the first 80 digits of the sequence are as follows:
11212312341234512345612345671234567812345678912345678910123456789101112345678910
Input
The 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)
Output
There should be one output line per test case containing the digit located in the position i.
Sample Input
283
Sample Output
22
题意很容易理解
思路:将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[N],sum[N];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;}
阅读全文
0 0
- 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
- POJ 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- 【Python3.6爬虫学习记录】(十)爬取教务处成绩并保存到Excel文件中(哈工大)
- 机器学习MATLAB函数
- hdu[6147] Pokémon GO II
- Spring学习(十)-AOP返回通知&异常通知&环形通知
- hdu 6138
- POJ 1019 Number Sequence
- C语言基础知识
- [BZOJ] 3674 可持久化并查集加强版(主席树广泛运用)
- 【zzuli 2181】(GJJ的日常之暴富梦)
- python学习八(私有属性、__del__(self)方法)
- CodeForces
- EXCEL ADDIN 学习(一)
- 在Ubuntu中使用JAVA与tomcat搭建web服务器
- Nmap功能与常用命令