poj1019(打表预处理+数学)
题目链接: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(打表预处理+数学)的更多相关文章
- 51nod 1082 与7无关的数【打表/预处理】
1082 与7无关的数 题目来源: 有道难题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 一个正整数,如果它能被7整除,或者它的十进制表示法中某个 ...
- MySQL 性能优化系列之一 单表预处理
MySQL 性能优化系列之一 单表预处理 背景介绍 我们经常在写多表关联的SQL时,会想到 left jion(左关联),right jion(右关联),inner jion(内关联)等. 但是,当表 ...
- 1087 1 10 100 1000(打表 set 数学)
1087 1 10 100 1000 题目来源: Ural 1209 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 1,10,100,1000... ...
- BZOj 4540: [Hnoi2016]序列 [莫队 st表 预处理]
4540: [Hnoi2016]序列 题意:询问区间所有子串的最小值的和 不强制在线当然上莫队啦 但是没想出来,因为不知道该维护当前区间的什么信息,维护前后缀最小值的话不好做 想到单调栈求一下,但是对 ...
- UVA-10200-Prime Time-判断素数个数(打表预处理)+精度控制
题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前 ...
- Manthan, Codefest 16 E. Startup Funding ST表 二分 数学
E. Startup Funding 题目连接: http://codeforces.com/contest/633/problem/E Description An e-commerce start ...
- ECNU 3480 没用的函数 (ST表预处理 + GCD性质)
题目链接 ECNU 2018 JAN Problem E 这题卡了双$log$的做法 令$gcd(a_{i}, a_{i+1}, a_{i+2}, ..., a_{j}) = calc(i, j)$ ...
- 51Nod 最长的循环节(打表预处理)
正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数. 1/6= ...
- 哈希表(散列表)—Hash表解决地址冲突 C语言实现
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...
随机推荐
- python linux 下开发环境搭建
1.1: 在虚拟环境目录下安装 ipython => pip install ipython 1.2: 简单的使用 => ipthyon => print("heollo ...
- JS 原型链 prototypt 和隐式原型 _proto_
prototype(原型) : 对象的一个属性,此属性使您有能力向对象添加属性和方法,当访问对象不存在属性是会自动到 prototype 中找 _proto_(隐式原型): 此对象构造函数(类)的原 ...
- 用大白话谈谈XSS与CSRF
这两个关键词也是老生常谈了,但是还总是容易让人忘记与搞混~.XSS与CSRF这两个关键词时常被拉出来一起比较(尤其是面试),我在这里也在写一篇扫盲文,也帮自己整理一下知识脉络. 这篇文章会用尽量“人话 ...
- Props文件属性读取
Properties props=new Properties(); try { props.load(new InputStreamReader(getClass().getResourceAsSt ...
- WebAssembly相关
git搜索:https://github.com/search?q=WebAssembly 相关demo:https://github.com/jpmorganchase/perspective we ...
- FormData上传文件(不是所有的浏览器都支持)
<h1>Ajax上传文件</h1> <div> <input type="file" id="img"/> &l ...
- sql server 2008 数据库可疑的解决步骤
备份并新建同名数据库,并替换原数据文件 1 把问题数据库备份后直接删除 停掉SQLSERVER服务,把服务器上出问题的数据库, 假设名称为 test的数据库文件及日志文件备份到其他目录,然后直接将其删 ...
- 用tomcat插件 在Eclipse 中配置Tomcat项目
1.安装Tomcat在Eclipse中的插件(使可以在eclipse中启动Tomcat) 2.培植eclipse中tomcat属性, window-->preferences 对话框中Tomca ...
- matt cutts : try something new for 30 days
30 天尝试新事物matt cutts : try something new for 30 days[小计划帮你实现大目标] 是否有些事情, 你一直想去做, 但就是没有实现?马特 ?卡茨建议: 尝试 ...
- Angular2学习笔记
Angular2 这里 Angular2 是指采用 TypeScript 语言的 Angular 2.0及以上版本.与采用 JavaScript 语言的 AngularJS 相比,Angular2 不 ...