zoukankan      html  css  js  c++  java
  • UVA

    先找到是在哪个集合内,再找到是集合内的哪个元素,最后找到元素的第几位数

    #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;
    }
    

    UVA - 10706

    Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu

    Submit Status

    Description

    Download as PDF

    Problem B
    Number Sequence
    Input:
    standard input
    Output: standard output
    Time Limit: 1 second

    A single positive integer iis given. Write a program to find the digit located in the position iin the sequence of number groups S1S2…Sk. Each group Skconsists 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.

    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

  • 相关阅读:
    MS SQL Server版本的选择
    ANSI,ASCII,Unicode的区别与联系!
    解决MSSQL中插入中文数据显示乱码的问题!
    ASP.NET中website与webApplication有何区别?
    常用SQL语句总结.
    外键的具体应用和表连接!
    String和datetime在SQL中和在C#中相互转换方法总结
    外键的学习
    if(!IsPostBack)的使用?
    如何在模板的内容页中添加javascript代码?
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6723204.html
Copyright © 2011-2022 走看看