zoukankan      html  css  js  c++  java
  • POJ1019:Number Sequence

    http://poj.org/problem?id=1019

    题目:

    Number Sequence
    Time Limit: 1000MS Memory Limit: 10000K
    Total Submissions: 24168 Accepted: 6466

    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

    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
     
    数学类问题,题意是给一串 1 12 123 1234 12345 123456 。。。。这样的数字问第

    i个数字是多少。这题的trick在于第i个数与第i-1个数的位数差不定,可以利用公式:(int)log10(double(i))+1,当增加的数字是10的幂次关系时个数会变化。

    打表:一开始没有打表,超时了~~~~呵呵····终于知道什么叫打表了!!

    #include<math.h>
    #include
    <iostream>
    using namespace std;
    unsigned
    int a[31270],s[31270];
    void reset()//打表
    {
    int i;
    a[
    1]=1;
    s[
    1]=1;
    for(i=2;i<31270;i++)
    {
    a[i]
    =a[i-1]+(int)log10((double)i)+1;
    s[i]
    =s[i-1]+a[i];
    }
    }

    int main()
    {
    int T;
    int n;
    int i;
    scanf(
    "%d",&T);
    reset();
    while(T--)
    {
    scanf(
    "%d",&n);
    i
    =1;

    while(s[i]<n) i++;

    int pos=n-s[i-1];
    int tmp=0;
    for(i=1;tmp<pos;i++)
    {
    tmp
    +=(int)log10((double)i)+1;
    }
    int k=tmp-pos;
    printf(
    "%d\n",(i-1)/(int)pow(10.0,k)%10) ;/*从右向左求,比如123456,k=2,则结果为4*/

    }
    return 0;

    }

    这道题是比较简单的了~~~~~~

  • 相关阅读:
    idea git使用记录
    会计科目中的借贷理解
    git使用合集
    Unsupported major.minor version 52.0
    sts问题合集
    idea导入工程
    (转)解决mybatis的mapper.xml查询不出数据,结果一直为null问题
    战争热诚的python全栈开发之路
    Python机器学习笔记:SVM(4)——sklearn实现
    Python机器学习笔记:SVM(3)——证明SVM
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2113279.html
Copyright © 2011-2022 走看看