POJ 1019 Number Sequence
2014-07-15 11:36
274 查看
Number Sequence
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 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 2 8 3 Sample Output 2 2 Source Tehran 2002, First Iran Nationwide Internet Programming Contest |
题目大意:
给出一个正整数n,输出在这组序列中第n的位置。
序列:11212312341234512345612345671234567812345678912345678910123456789101112345678910........
解法:利用公式(int)log10((double)i)+1;求出一个数的位数,把每一组分成一个区间,例如1 、12、123、1234、12345、123456、1234567等。第一次循环确定在哪一个大区间,然后再区间中具体找位置。
#include <stdio.h> #include <iostream> #include <math.h> using namespace std; int main() { int m; cin>>m; int m1; for(m1=1;m1<=m;m1++) { int n; cin>>n; __int64 i,j,k; __int64 len=0,sum=0; __int64 p; for(i=1;;i++) { p=(int)log10((double)i)+1; len=len+p; sum=sum+len; if(sum>=n) break; } __int64 g=0; g=n+len-sum;//求在区间中的第几位 __int64 f; k=0; while(g>0) { k++; f=(int)log10((double)k)+1; g=g-f; } g=g+f;//多减了一次 char a[1000]; j=0; while(k>0) { a[j]=k%10+48; k=k/10; j++; } printf("%c\n",a[f-g]);//倒着存入的 } return 0; }
相关文章推荐
- poj 1019 Number Sequence , 二分
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- poj1019 Number Sequence 二分+数学+打表
- Poj 1019 Number Sequence( 数据分析和操作)
- poj 1019 Number Sequence(dp+二分)
- [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
- poj 1019 Number Sequence (组合数学)
- 组合数学 POJ 1019 Number Sequence
- POJ 1019 Number Sequence (循环递增序列的的第K个值)
- POJ 1019:Number Sequence
- POJ 1019 Number Sequence (数学+预处理 循环递增序列第k位数字)
- POJ1019 ZOJ1410 UVA10706 Number Sequence【数学】
- nyist 413 && poj 1019 Number Sequence