栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1019 Number Sequence

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1019 Number Sequence

#include<iostream>#include<cmath>#include<cstdio>using namespace std;int a1[32000] ;        //用来存储每一个串所占的空间__int64 a[32000] ;    //用来存储每一个串的起始位置int num[150000];    //打印出最大的一个串int main(){    int i;    a1[0]=0 ;    a1[1]=1;    for ( i = 2 ; i < 32000 ; i ++ )        a1[i] = a1[i-1] + (int)log10(1.0*i)+1;    //推导详见上文    a[0]=1;    for ( i = 1 ; i < 32000 ; i ++ )        a[i]=a[i-1]+a1[i-1];         //上一个串的起点加所占空间就是下一个串的起点         int k = 1;    for ( i = 1 ; i < 31300 ; i ++ )    {//打印最大的一个串        char str[20];        str[0]='0';        int ti = i ;        int len = 0 ;        while (ti)        { str[len]=ti%10+'0'; ti=ti/10; len++;        }        while ( len -- )        { num[k]=str[len]-'0'; k++;        }    }    int t;    cin >> t;    while ( t-- )    {        int mn;        cin >>mn;        for ( i =1; i < 32000 ; i ++ ) if ( a[i]>=mn )     break;        if ( a[i] ==mn ) cout<<1<<endl;        else        {//mn-a[i-1]+1就是其在第i-1个串里的相对位置 cout<<num[mn-a[i-1]+1]<<endl;        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368349.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号