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 ...
随机推荐
- f-li.cn
package org.rx.service.command.impl; import lombok.Getter; import lombok.Setter; import org.rx.core. ...
- java 原生 HttpClient
package org.rx.socks.http; import com.google.common.base.Strings; import lombok.SneakyThrows; import ...
- Java jar文件
JAR(Java Archive)是基于ZIP文件格式的文件格式. 它用于捆绑Java应用程序或小程序的资源,类文件,声音文件,图像等. 它还提供数据压缩.一个JAR文件作为一种特殊类型的ZIP文件. ...
- PyUnit (unittest) 的用法
PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试.PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用 ...
- Java 获取当前系统的操作系统类型
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fangchao2011/article/d ...
- Jenkins添加Windows自动化构建方案
一.为Jenkins添加Windows节点 这里需要填写远程工作目录,启动方法一项一定要选择"Launch agent via Java Web Start"一项,其它的保持默认. ...
- 数组foreach
简单使用 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- curl命令测试服务器是否支持断点续传
通过curl命令测试服务器是否支持断点续传 curl -i --range 0-9 http://www.baidu.com/img/bdlogo.gif HTTP/1.1 206 Partial ...
- Executor ExecutorService Executors
Executor public interface Executor { void execute(Runnable command); } ExecutorService ExecutorServi ...
- R语言 数据类型
R语言数据类型 通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种 ...