题目大意:

有一组规律数

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的更多相关文章

  1. HDU 1005 Number Sequence

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. POJ 1019 Number Sequence

    找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...

  3. HDOJ 1711 Number Sequence

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. Number Sequence

    Number Sequence   A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) ...

  5. [AX]AX2012 Number sequence framework :(三)再谈Number sequence

    AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...

  6. KMP - HDU 1711 Number Sequence

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. hdu 1005:Number Sequence(水题)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. 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 ...

  9. HDU 1711 Number Sequence(数列)

    HDU 1711 Number Sequence(数列) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

随机推荐

  1. f-li.cn

    package org.rx.service.command.impl; import lombok.Getter; import lombok.Setter; import org.rx.core. ...

  2. java 原生 HttpClient

    package org.rx.socks.http; import com.google.common.base.Strings; import lombok.SneakyThrows; import ...

  3. Java jar文件

    JAR(Java Archive)是基于ZIP文件格式的文件格式. 它用于捆绑Java应用程序或小程序的资源,类文件,声音文件,图像等. 它还提供数据压缩.一个JAR文件作为一种特殊类型的ZIP文件. ...

  4. PyUnit (unittest) 的用法

    PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试.PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用 ...

  5. Java 获取当前系统的操作系统类型

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fangchao2011/article/d ...

  6. Jenkins添加Windows自动化构建方案

    一.为Jenkins添加Windows节点 这里需要填写远程工作目录,启动方法一项一定要选择"Launch agent via Java Web Start"一项,其它的保持默认. ...

  7. 数组foreach

    简单使用 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  8. curl命令测试服务器是否支持断点续传

     通过curl命令测试服务器是否支持断点续传 curl -i --range 0-9 http://www.baidu.com/img/bdlogo.gif HTTP/1.1 206 Partial ...

  9. Executor ExecutorService Executors

    Executor public interface Executor { void execute(Runnable command); } ExecutorService ExecutorServi ...

  10. R语言 数据类型

    R语言数据类型 通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种 ...