这题目关键是打表,haha[k]数组表示的是S1S2..Sk该串结尾所在的位置。然后用n去找n所在的k值,此时haha[k-1]<n<=haha[k]。然后再算出从haha[k]位置到n一共有多少位,再查出来就行了。

本来我要用打表+二分的想法,不过后来二分写的不太好一看可以直接遍历就遍历,limit=3万多,直接遍历也行!有时间把这个二分好好的重写一下。

一点没看题解,做出来挺开心的!

1-9 的长度 = 9

1-99 的长度 = 189

1-999 的长度 =  2889

1-9999的长度 = 38889

31268是事先计算好的,haha[31268]时候正好大于临界值。

 #include <stdio.h>
#define limit 31268
long long haha[];
void init(){
int cnt=,i;
int t;
haha[]=;
for(i=;i<=;++i){
haha[i]=haha[i-];
if(cnt>=){
haha[i]+=(cnt-+)*+;
}
else if(cnt>=){
haha[i]+=(cnt-+)*+;
}else if(cnt>=){
haha[i]+=(cnt-+)*+;
}else if(cnt>=){
haha[i]+=(cnt-+)*+;
}else if(cnt>){
haha[i]+=*cnt;
}
cnt++;
if(haha[i]>){
break;
}
}
return ;
}
int main(){
int t,ii,i,l,r,mid;
int n;
int pos;
int cnt;
int tmp;
int res;
init();
while(~scanf("%d",&t)){
while(t--){
scanf("%d",&n);
/*
l=0;
r=limit;
mid=(r+l)/2;
while(haha[r]>=n&&n>=haha[l]){
printf("l=%d,r=%d,haha[l]=%lld,haha[r]=%lld\n",l,r,haha[l],haha[r]);
if(n<haha[mid]){
r=mid;
}else if(n>haha[mid])
l=mid;
else break;
mid=(r+l)/2;
}
pos=mid;
*/
for(i=;i<=limit;++i){
if(haha[i]>=n)
break;
}
pos=i;
cnt=;
res=-;
// printf("n=%d,pos=%d,haha[pos]=%lld\n",n,pos,haha[pos]);
if(n-(int)haha[pos]<){
n=(int)haha[pos]-n;
n++;
for(i=pos;i>=;--i){
int ii=i;
while(ii>){
tmp=ii%;
ii=ii/;
cnt++;
if(cnt==n){
res=tmp;
break;
}
}
if(res!=-) break;
}
printf("%d\n",res);
}else if(n-(int)haha[pos]==){
printf("%d\n",pos%);
}
}
}
return ;
}

poj1019_Number_Sequence的更多相关文章

随机推荐

  1. Ecshop(二次开发) - 后台添加左侧菜单导航

    1.链接地址:修改 admin\includes\inc_menu.php 文件. $modules['17_syn_data']['view_syn']        =    'synchroni ...

  2. JAVA 静态成员 static

    static关键字 一.作用:是一个修饰符,用于修饰成员(成员变量,成员方法)1.被static 修饰后的成员变量只有一份2.当成员被static修饰之后,多了一种访问方式,除了可以被对象调用之外还可 ...

  3. ipython and bpython

    ipython: 1.安装easy_install工具 wget http://peak.telecommunity.com/dist/ez_setup.py python ez_setup.py 2 ...

  4. 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法

    关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...

  5. HDU 5834 [树形dp]

    /* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值.问从第i个点出发,获得的利益最大是多少. 输入: 测试样例组数T n n个数 ...

  6. [HackerCup Round1 3] Winning at Sports (动态规划)

    题目链接:https://www.facebook.com/hackercup/problems.php?pid=688426044611322&round=344496159068801 题 ...

  7. 再战map

    以前自己整理过map容器,但是好像没有这篇这么系统... Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处 ...

  8. maven skip tests

    DskipTests=true is short form of -Dmaven.test.skip=true

  9. 翻译:深入 AngularUI Router

    原文地址:http://www.ng-newsletter.com/posts/angular-ui-router.html ui-router: https://angular-ui.github. ...

  10. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...