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
    ");
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    .Spring事务管理
    什么叫事务;什么叫业务逻辑;什么叫持久化
    Hibernate基本应用01
    Maven整理
    责任链模式和观察者模式
    SpringBoot基础入门
    反射总结
    多线程
    IO流
    File类总结
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7892264.html
Copyright © 2011-2022 走看看