UVaOJ10706 - Number Sequence
来源:互联网 发布:做淘宝联盟赚钱吗 编辑:程序博客网 时间:2024/06/05 12:40
10706 - Number Sequence
Time limit: 3.000 secondsA single positive integer i is given. Write a program to find the digit located in the position i in the sequence of number groupsS1S2…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 <=25), 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 Output for Sample Input
2
8
3
2
2
Problem source: Iranian Contest
Special Thanks: Shahriar Manzoor, EPS.
#include<stdio.h>#include<string.h>#include<ctype.h>#include<math.h>#define MAX 2147483647using namespace std;int K;long long int sum[100000];char b[1000000];int pan(int x) { int n = 0; while(x) { x /= 10; n ++; } return n;}void init() { int i,j,a; K = sqrt(MAX) + 1; j=1; for(i=1; i<=K; i++) { sprintf(&b[j],"%d",i); while(isdigit(b[j])) j++; } a=sum[0]=0; for(i=1;i<=K;i++) { a+=pan(i); sum[i]=sum[i-1]; sum[i]+=a; }}int main() { int k,num,t,min,mid,max; init(); scanf("%d",&t); while(t--) { scanf("%d",&num); min=0; max=K; while(1) { mid=(min+max)/2; if(mid==min) break; if(sum[mid]>=num) max=mid; else min=mid; } k=num-sum[mid]; printf("%c\n",b[k]); } return 0;}
- UVaOJ10706 - Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- 二叉树的创建、前/中/后序遍历、按层遍历C语言实现
- UVaOJ10057 - A mid-summer night's dream.
- TCP/IP Monitor监控工具应用
- poj 1051 P,MTHBGWB(字符串,较麻烦)
- Android ActionBar+ViewPager 实现左右滑动Tab
- UVaOJ10706 - Number Sequence
- 15.如何在同一个程序中混合使用C++和C
- 聚集索引和非聚集索引(整理)
- WCF编程之契约
- UVaOJ10487 - Closest Sums
- 打开指定文件夹里的图片
- hdu 1166(线段树)
- UVaOJ10340 - All in All
- java获取目录路径,