First find the set in which it is located, then find the element in the Set, and finally find the number of digits of the element.
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;long long table[100010];long long psum[100010];int n=100000;void maketable(){ int i,flag=1,x=0; for(i=1;i<=n;i++) { if(i%flag==0) { flag*=10; x++; } table[i]=table[i-1]+x; psum[i]+=table[i]+psum[i-1]; }}int main(){ //freopen("in","r",stdin); //freopen("out","w",stdout); maketable(); int T,i,t; long long x; char s[100]; cin>>T; while(T--) { cin>>x; i=lower_bound(psum,psum+n,x)-psum; if(psum[i]==x) cout<<i%10<<endl; else { x-=psum[i-1]; i=lower_bound(table,table+n,x)-table; if(table[i]==x) cout<<i%10<<endl; else { x-=table[i-1]; sprintf(s,"%d",i); cout<<s[x-1]<<endl; } } } return 0;}
UV-10706
Number Sequence
Time limit:3000 Ms |
|
Memory limit:Unknown |
|
64bit Io format:% LLD & % LlU |
Submitstatus
Description
Problem B
Number Sequence
Input:Standard Input
Output:Standard output
Time limit:1 second
A single positive integerIIs given. Write a program to find the digit located in the positionIIn the sequence of Number GroupsS1s2... SK. Each groupSKConsists of a sequence of positive integer numbers ranging from1ToK, Written one after another. For example, the first80Digits of the sequence are as follows:
11212312341234512345612345671234567812345678912345678910123456789101112345678910
Input
The first line of the input file contains a single integerT (1 <= T <= 25), The number of test cases, followed by one line for each test case. The line for a test case contains the single integerI (1 <= I <= 2147483647)
Output
There shoshould be one output line per test case containing the digit located in the positionI.
Sample input output for sample input
Problem Source: Iranian contest
Special thanks: Shahriar Manzoor, EPS.
Source
Root: aoapc I: Beginning algorithm contests (rujia Liu): Volume 4. Algorithm Design
Root: Competitive programming 2: This increases the lower bound of programming contests. Again (Steven & Felix Halim): Problem Solving Paradigms: Divide and conquer-Binary Search
Root: Competitive programming 3: the new lower bound of programming contests (Steven & Felix Halim): Problem Solving Paradigms: Divide and conquer: Binary Search
Ultraviolet A-10706 Number Sequence