Number Sequence /// oj21456
题目大意:
有一组规律数
the first 80 digits of the sequence are as follows:
1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910 1234567891011 12345678910......
t组测试数据
每次给定一个n 输出第n个数字是什么 (如:80 答案则为0而不是数10)
将整组数分成多段 即 1、12、123、1234、12345 .....
预处理出所有段的长度 f [ ] 并将所有长度处理成前缀和 s [ ]
输入n后 先找到其所在的整段
n减去之前的段长 就能得到在其所在段的位置ind
因为规律是在前一小段的基础上加上下一个数
所以可以再找到其位置之前的前驱段
(如: 所在整段为 12345 若ind为4 那么其前驱段为123
找到ind前驱段后 就能得到ind所在的数是多少
再按这个数的 位数 和 ind位置 判断数字
#include <cstdio>
#include <cmath>
#define ll long long
using namespace std; ll f[], s[];
void init()
{
int c=;
s[c]=0LL; f[c++]=0LL;
s[c]=1LL; f[c++]=1LL;
for(double i=;s[c-]<=;i++)
f[c]=f[c-]+(ll)log10(i)+1LL,
s[c]=s[c-]+f[c], c++;//, printf("%d %lld\n",c-1,s[c-1]);
} int main()
{
init();
int t; scanf("%d",&t);
while(t--) {
ll n; scanf("%lld",&n); int k=;
while(s[k]<n) k++;
int ind=n-s[k-]; k=;
while(f[k]<ind) k++;
ind-=f[k-]; int ans;
for(int i=(int)log10((double)k)+;k;i--,k/=)
if(ind==i) { // 按位数和位置判断
ans=k%; break;
}
// ans=(int)pow((double)10,f[k]-ind)%10; 也可以直接用这个式子得到
printf("%d\n",ans);
} return ;
}
Number Sequence /// oj21456的更多相关文章
- HDU 1005 Number Sequence
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- POJ 1019 Number Sequence
找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- HDOJ 1711 Number Sequence
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Number Sequence
Number Sequence A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) ...
- [AX]AX2012 Number sequence framework :(三)再谈Number sequence
AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...
- KMP - HDU 1711 Number Sequence
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 1005:Number Sequence(水题)
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Number Sequence 分类: HDU 2015-06-19 20:54 10人阅读 评论(0) 收藏
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- HDU 1711 Number Sequence(数列)
HDU 1711 Number Sequence(数列) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
随机推荐
- 入门级_Tensorflow网络搭建
Tensorflow如何搭建神经网络 1.基本概念 基于Tensorflow的神经网络:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型 张量:张量就是多维数据 ...
- CSS:CSS 伪元素
ylbtech-CSS:CSS 伪元素 1.返回顶部 1. CSS 伪元素 CSS伪元素是用来添加一些选择器的特殊效果. 语法 伪元素的语法: selector:pseudo-element {pro ...
- img路径错误时,用户友好图片
img 标签的属性里面添加 onerror="this.src='error友好图片'" 就可以了!
- cesium安装及第一个示例
cesium安装及第一个示例 一.环境要求 二.浏览器要求 三.安装node.js 四.下载cesium包(地址为https://cesiumjs.org) 包括了 五.在你的项目里引入相关js与cs ...
- Day 16 : Python 时间模块[time,]datetime[]及第三方模块的下载与安装
在进行python程序开发时,除了可以使用python内置的标准模块外,还右许多第三方模块使用,可以在python官网找到. 在使用第三方模块时,需要下载并安装此模块,然后就可以使用标准模块一样导入并 ...
- Flask数据库的基本操作
Flask操作数据库基本操作 常用的SQLAlchemy字段类型 类型名 python中类型 说明 Integer int 普通整数,一般是32位 SmallInteger int 取值范围小的整 ...
- 74HC595点亮8个LED灯
一.原理介绍 595有两个寄存器,都是8位的,如下所示: 595是串入并出带有锁存功能移位寄存器,它的使用方法简单: - - 在正常使用时 /SCLR接高电平,/G接低电平. - - 从SER每输 ...
- cross compile 交叉编译 ffmpeg
ffmpeg 支持各种压缩格式的视频解码库,经常出现在各种播放器中,交叉编译也是一项麻烦的事情. 1. 下载ffmpeg 源码包 http://ffmpeg.org/releases/ffmpeg ...
- shell脚本输出空心等腰三角形
第一种:(for循环) #!/bin/bash#空心等腰三角形arr=9 #定义金字塔的层数for ((i=1;i<=$arr;i++))do for ((j=1;j<=$(($arr-$ ...
- centos 7 中安装Oracle 12c
今天有需要在centos 7上安装oracle 12 所以上网查了一下安装流程,原贴转自:https://blog.csdn.net/github_39294367/article/details/7 ...