zoukankan      html  css  js  c++  java
  • 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)

    题目描述

    有一个无穷序列如下:

    110100100010000100000…

    请你找出这个无穷序列中指定位置上的数字

    输入输出格式

    输入格式:

     

    第一行一个正整数N,表示询问次数;

    接下来的N行每行一个正整数Ai,Ai表示在序列中的位置。

     

    输出格式:

     

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

     

    输入输出样例

    输入样例#1: 复制
    4
    3
    14
    7
    6 
    
    输出样例#1: 复制
    0
    0
    1
    0
    

    说明

    对于100%的数据有N≤1500000,Ai≤10^9

    思路:前缀和+二分。

    #include<map>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    map<int,bool>ma;
    int n,x,sum=1;
    int main(){
        scanf("%d",&n);
        for(int i=1;i;i++){
            ma[sum]=1,sum+=i;
            if(sum>1000000000)    break; 
        }
        while(n--){
            scanf("%d",&x);
            if(ma[x])    printf("1
    ");
            else printf("0
    ");
        }
    }
    STL TLE 90分
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int ma[44722];
    int l,r,mid;
    int n,x,sum=1;
    int main(){
        scanf("%d",&n);
        ma[1]=1;
        for(int i=2;i<=44721;i++)
            ma[i]=ma[i-1]+i-1;
        while(n--){
            scanf("%d",&x);
            l=1;r=44721;int flag=0;
            for(int i=1;i<=32;i++){
                mid=(l+r)/2;
                if(ma[mid]<x)    l=mid+1;
                else if(ma[mid]>x)    r=mid-1;
                else if(ma[mid]==x){ flag=1;break; }
            }
            if(flag)    printf("1
    ");
            else printf("0
    ");
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    JS面向(基于)对象编程--构造方法(函数)
    一个超简单的马里奥游戏
    JavaScript基于对象编程
    JavaScript基础之函数与数组
    Learn CSS
    The first day of HTML
    mysql cmd 无法登录
    datagrid 扩展 页脚 合计功能
    this高级应用
    (xxx.55).toFixed(1) 无法正确进位处理
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7892264.html
Copyright © 2011-2022 走看看