首页 > 代码库 > 无限序列

无限序列

描述

1101001000100001000001.......

求第Ai位的数是什么

Ai<=2000000

因为可以推出所有1位置的序号

就可以用一个数组给存起来

又因序号是递增的

所以就可以二分来查找

 1 # include<cstdio> 2 # include<cstring> 3 # include<iostream> 4 # include<algorithm> 5 using namespace std; 6 typedef unsigned long long LL; 7 const int maxn=50000; 8 const int INF=900000000; 9 LL f[maxn];10 int two_find(LL l,LL r,LL x){11     while(l<r){12         LL mid=(l+r)>>1;13         if(f[mid]==x)return 1;14         else if(f[mid]>x)r=mid;15         else l=mid+1;16     }17     return 0;18 }19 int main(){20     ios::sync_with_stdio(false);21     LL cur=0,tb=1,num=1,n,x;22     while(f[cur++]<=INF){23         f[cur]=num;24         num=num+tb;25         tb++;26     }27     cin>>n;28     for(int i=1;i<=n;i++){29         cin>>x;30         if(two_find(1,cur,x))printf("1\n");31         else printf("0\n");32     }33     return 0;34 }

 

无限序列