zoukankan      html  css  js  c++  java
  • Tyvj-TOM的无穷序列

    背景

    蛟川书院模拟试题

    描述

    TOM有一个无穷序列中如下:
    110100100010000100000。。。。。
    请你帮助TOM找出在这个无穷序列中指定位置上的数字

    输入格式

    第一行一个正整数N,表示询问的次数;
    接下来的N行一个正整数Ai,Ai表示在序列中的位置。

    输出格式

    N行,每一行为0或1,表示序列第Ai位上的数字。

    测试样例1

    输入



    14 

    6

    输出




    0

    备注

    对于100%的数据有N<=1500000,Ai<=10^9
    提示:差值为1的等差数列   Sn(前n项和)=n(n+1)/2
    Moe-ing
     
    思路:这题数据有点大,不考虑用模拟出整个序列再求,可以找出这个序列的规律,在对其进行计算。
    过程:可以先对于2*(a-1+0.25)进行开方,并取整,再用a-sum*(sum-1)/2;,这样就可以知道那一位是不是1或者0。
    代码如下:
     1 #include<stdio.h>
     2 #include<math.h> 
     3 int main()
     4 {
     5     int a,sum,n;
     6     scanf("%d",&n);
     7     while(n--)
     8     {
     9         scanf("%d",&a);
    10         sum=0.5+sqrt(0.25+2*(a-1));//对于2*(a-1+0.25)进行开方,并取整 
    11         a=a-sum*(sum-1)/2;
    12         if(a==1)printf("%d
    ",1);//是1 
    13         else printf("%d
    ",0);//否则是0 
    14     }
    15     return 0;
    16 }
     
    我不怕千万人阻挡,只怕自己投降…
  • 相关阅读:
    2017D 方格分割
    2017B 等差素数列
    完全平方数
    K-th Number(二分答案+尺取法判断)
    cf634div3
    performSelector: 与 dispatch_time 异同
    UIButton 的属性与方法
    Node.js 学习笔记三
    [2019杭电多校第一场][hdu6578]Blank(dp)
    [2019杭电多校第一场][hdu6582]Path(最短路&&最小割)
  • 原文地址:https://www.cnblogs.com/geek-007/p/4298743.html
Copyright © 2011-2022 走看看