题目链接:http://poj.org/problem?id=1019

题意:对于序列1121231234...,求第i个数字(i<=2147483647)。

思路:记第一组为1,第二组为12,第三组为123,打表预处理计算除第2147482647位在第31268组,然后预处理计算前31268组的位数,存储在sum数组中,其中(int)log10((double)i)+1表示数据 i 的位数。然后模拟就行了,计算出当前要计算的第x位处在第k1组中,然后找到所求位数位于整数 i 中,把 i 后面的数字除掉,取模之后即所求结果,看着很绕,自己模拟一遍就明白了。

AC代码:

 #include<cstdio>
#include<cmath>
using namespace std; unsigned int sum[];
int T,n; void play_table(){
unsigned int pre=,nw;
sum[]=;
for(int i=;i<=;++i){
nw=pre+(int)log10((double)i)+;
sum[i]=sum[i-]+nw;
pre=nw;
}
} int getd(int x){
int k1;
for(int i=;i<=;++i)
if(x<=sum[i]){
k1=i;
break;
}
int p=x-sum[k1-],len=,i;
for(i=;i<=k1;++i){
len+=(int)log10((double)i)+;
if(p<=len)
break;
}
int ilen=(int)log10((double)i)+;
len-=ilen;
int k2=p-len;
for(int j=k2+;j<=ilen;++j)
i/=;
return i%;
} int main(){
play_table();
scanf("%d",&T);
while(T--){
scanf("%d",&n);
printf("%d\n",getd(n));
}
return ;
}

poj1019(打表预处理+数学)的更多相关文章

  1. 51nod 1082 与7无关的数【打表/预处理】

    1082 与7无关的数 题目来源: 有道难题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 一个正整数,如果它能被7整除,或者它的十进制表示法中某个 ...

  2. MySQL 性能优化系列之一 单表预处理

    MySQL 性能优化系列之一 单表预处理 背景介绍 我们经常在写多表关联的SQL时,会想到 left jion(左关联),right jion(右关联),inner jion(内关联)等. 但是,当表 ...

  3. 1087 1 10 100 1000(打表 set 数学)

    1087 1 10 100 1000 题目来源: Ural 1209 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 1,10,100,1000... ...

  4. BZOj 4540: [Hnoi2016]序列 [莫队 st表 预处理]

    4540: [Hnoi2016]序列 题意:询问区间所有子串的最小值的和 不强制在线当然上莫队啦 但是没想出来,因为不知道该维护当前区间的什么信息,维护前后缀最小值的话不好做 想到单调栈求一下,但是对 ...

  5. UVA-10200-Prime Time-判断素数个数(打表预处理)+精度控制

    题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前 ...

  6. Manthan, Codefest 16 E. Startup Funding ST表 二分 数学

    E. Startup Funding 题目连接: http://codeforces.com/contest/633/problem/E Description An e-commerce start ...

  7. ECNU 3480 没用的函数 (ST表预处理 + GCD性质)

    题目链接  ECNU 2018 JAN Problem E 这题卡了双$log$的做法 令$gcd(a_{i}, a_{i+1}, a_{i+2}, ..., a_{j}) = calc(i, j)$ ...

  8. 51Nod 最长的循环节(打表预处理)

    正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数.     1/6= ...

  9. 哈希表(散列表)—Hash表解决地址冲突 C语言实现

    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...

随机推荐

  1. 使用MagicAJax的AjaxPanel时有时会弹出"Using the AjaxCallHelper write methods outside of an AjaxCall is not allowed."

    ------解决方案--------------------------------------------------------1.看下你的输出是不是包含在<ajax:AjaxPanel I ...

  2. Shell 编程(实例二)

    创建一个脚本,为指定硬盘创建分区 1.列出当前系统所有磁盘,让用户选择,如果选择quit则退出脚本:如果选择错误,则重新选择 2.当用户选择完成后,询问是否继续 3.抹除选择磁盘上的分区,为其创建三个 ...

  3. 【Source Insight 】之marco学习笔记2

    现在我们看先看一个 官方地址https://www.sourceinsight.com/download/macro-files/中的 autoexp.em Automatically expands ...

  4. VC中明明已经添加了头文件却还提示未定义的问题

    我在VS中编译程序遇到这个错误:error C3861: 'ReadDirectoryChangesW': identifier not found, even with argument-depen ...

  5. day34-常见内置模块三(re模块)

    re模块 1.什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并 ...

  6. WDA-1-环境配置

    1.Internet Communication Manager 确认ICM中提供的HTTP/HTTPS运行正常. Tcode: SMICM -> Display service. ICM在SA ...

  7. css:清楚浮动

    这个清楚浮动的方法最常用,给浮动字元素的父盒子,也就是不浮动元素,添加一个lhearfix的类,其类的css样式为: .clearfix:after{ /*必须要写这三句话*/ content:''; ...

  8. Windows下查看端口常用命令以及关闭端口的方法

    1.C:\Users\JavaKam> netstat -ano|findstr 1099 TCP LISTENING TCP [::]: [::]: LISTENING 2.出现: C:\Us ...

  9. py3 读入和写入csv,txt文件

    import numpy as npimport pandas as pdimport time import datetimeimport csv http://pandas.pydata.org/ ...

  10. 解决python3.6的UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 28613: illegal multibyte sequence

    这是python3.6的print()函数自身有限制,不能完全打印所有的unicode字符. 主要的是windows下python的默认编码不是'utf-8',改一下python的默认编码成'utf- ...