题目大意:

有一组规律数

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. hexo的next主题博客中加入分类页面的js,实现多级目录,并且能够点击展开,隐藏下级目录~(不知道算不算深度优化~~~)

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 多级标题 在自己的xxxx.md文件中做如下修 ...

  2. JWT(JSON Web Token) 多网站的单点登录,放弃session 转载https://www.cnblogs.com/lexiaofei/p/7409846.html

    多个网站之间的登录信息共享, 一种解决方案是基于cookie - session的登录认证方式,这种方式跨域比较复杂. 另一种替代方案是采用基于算法的认证方式, JWT(json web token) ...

  3. Linux用户空间内存区域的匿名映射

    1 在调用mmap系统调用时,可以指定的标志(flag)参数: 1: #define MAP_SHARED 0x01 /* Share changes */ 2: #define MAP_PRIVAT ...

  4. HTML中<frameset>标签不显示的问题

    啥都不说,先上代码 <html> <head> <title>index</title> <meta content = 'text/html'; ...

  5. centos7下的nfs配置

    NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. nfs为什么需要RPC?因为NFS支持的功能很多,不同功能会 ...

  6. C# String类常用操作

    1.string.Compare(s1,s2) 比较  按字母顺序后边的大于前边的 s1<s2 retrun -1 ;s1=s2 return 0; s1>s2 return1. Cons ...

  7. Logic回归总结

    转自http://blog.csdn.net/dongtingzhizi/article/details/15962797 当我第一遍看完台大的机器学习的视频的时候,我以为我理解了逻辑回归,可后来越看 ...

  8. 【POJ】2031 Building a Space Station

    题目链接:http://poj.org/problem?id=2031 题意:修建太空站每个舱之间的走廊.每个舱都是球体.给出n个舱的三维空间坐标以及球体半径.如果球体之间接触或者相接,就不用修走廊. ...

  9. css 折角效果/切角效果

    首先我们先创建一个图案为100像素的斜面切角的图案 html <div class="one">12345</div> css .one{ width: 1 ...

  10. webpack4.x的使用历程

    第一次接触的webpack是在一个3.x的资料中 在4.x的运用中遇到了好多的坑,我就以小白的身份把我使用webpaxk的过程分享出来,其中很多不足欢迎大佬们指正 node安装不再赘述 一.安装 np ...