POJ 1019 Number Sequence
来源:互联网 发布:淘宝店铺注册步骤 编辑:程序博客网 时间:2024/04/25 10:26
这个题目我在很久以前做过,不过是很蠢的方法,结果还是用了16ms,现在几乎是暴力都能0ms AC,一年的时间过得好快,两年的时间也好快。。。。我的方法应该很好理解,首先是要一路减下去,先确定这个数是在 多大 的范围内,然后再确定。我先自己确定了一下2147483647个数 大约在1-150000范围内。所以是10^6,t=10;故最多是 10^7。这样做不会爆。
代码:
#include<iostream>using namespace std;int num[10]={0,9,99,999,9999,99999,999999,9999999};void Solve(int i,int n){ if( n%i==0) printf("%d\n",(n/i+num[i-1])%10); else{ for(int j=1;j<=6;j++){ if( n%i==j){ printf( "%d\n",(n/i+1+num[i-1])%(num[i-j+1]+1)/(num[i-j]+1) ); break; } } }}int main(){ int n,t; scanf("%d",&t); int cnt=0,i,x; while( t--){ scanf("%d",&n); cnt=0; for( i=1; n>0;i++){ if( i<10){ cnt+=1; n-=cnt; } else if( i<100){ cnt+=2; n-=cnt; } else if( i<1000){ cnt+=3; n-=cnt; } else if( i<10000){ cnt+=4; n-=cnt; } else if( i<100000){ cnt+=5; n-=cnt; } else{ cnt+=6; n-=cnt; } } //确定这个数是几; n+=cnt; for( i=1; i<=6;i++){ //进一步缩小到是几位的 x=i*(num[i]-num[i-1]); if( n>x) n-=x; else break; } Solve(i,n); } return 0;}
- POJ 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ-1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- poj 1019 Number Sequence
- POJ 1019 Number Sequence
- 社区:第三空间
- div+css布局————笔试题
- 爪哇夜未眠
- 我是怎么招聘程序员的
- 祝贺博文《广东电信公话业务中CRM系统的研究与探索 》浏览量突破1000次
- POJ 1019 Number Sequence
- 在AIX6.1下编译python版的cx_Oracle报cx_Oracle错误
- oracle获取当前时间
- 各种寻址和过程进出简介
- unity3d崩溃日志存储位置
- JNA 技术解密
- Android.mk用法
- Android: wakelock
- Android调用堆栈跟踪