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 }
     
    我不怕千万人阻挡,只怕自己投降…
  • 相关阅读:
    sql 删除重复行
    sql 内连接和外链接
    浏览器内核
    asp.net session
    使用powerdesigner创建数据库表
    数据库中char, varchar, nvarchar的差异
    概要设计和详细设计说明书的区别
    2.类和对象
    1.Basic Layouts
    1.初学c++,比较困惑的问题。
  • 原文地址:https://www.cnblogs.com/geek-007/p/4298743.html
Copyright © 2011-2022 走看看