• Codeforces Round #581 (Div. 2)A BowWow and the Timetable (思维)


    A. BowWow and the Timetable
    time limit per test1 second
    memory limit per test256 megabytes
    inputstandard input
    outputstandard output
    In the city of Saint Petersburg, a day lasts for 2100 minutes. From the main station of Saint Petersburg, a train departs after 1 minute, 4 minutes, 16 minutes, and so on; in other words, the train departs at time 4k for each integer k≥0. Team BowWow has arrived at the station at the time s and it is trying to count how many trains have they missed; in other words, the number of trains that have departed strictly before time s. For example if s=20, then they missed trains which have departed at 1, 4 and 16. As you are the only one who knows the time, help them!

    Note that the number s will be given you in a binary representation without leading zeroes.

    Input
    The first line contains a single binary number s (0≤s<2100) without leading zeroes.

    Output
    Output a single number — the number of trains which have departed strictly before the time s.

    Examples
    inputCopy
    100000000
    outputCopy
    4
    inputCopy
    101
    outputCopy
    2
    inputCopy
    10100
    outputCopy
    3
    Note
    In the first example 1000000002=25610, missed trains have departed at 1, 4, 16 and 64.

    In the second example 1012=510, trains have departed at 1 and 4.

    The third example is explained in the statements.

    题意:
    给你一个二进制的数x,问有多少个4^i 小于x
    思路:

    因为给的是二进制数,

    我们知道一个二进制的数右移一位是除以2,那么右移两位就是除以4,

    那么我们只需要看二进制数能右移2位几次即可,这个只需要二进制的长度即可判定。

    又因为要求严格的小于x,那么如果是1000000,这样的数字,其实有效到的是 111111 ,即有效位数是减去1的。

    那么直接有效长度/2就是答案

    细节见代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <vector>
    #include <iomanip>
    #define ALL(x) (x).begin(), (x).end()
    #define sz(a) int(a.size())
    #define all(a) a.begin(), a.end()
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    #define pii pair<int,int>
    #define pll pair<long long ,long long>
    #define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
    #define MS0(X) memset((X), 0, sizeof((X)))
    #define MSC0(X) memset((X), '', sizeof((X)))
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define eps 1e-6
    #define gg(x) getInt(&x)
    #define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<<endl
    using namespace std;
    typedef long long ll;
    ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
    ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
    ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
    inline void getInt(int* p);
    const int maxn=1000010;
    const int inf=0x3f3f3f3f;
    /*** TEMPLATE CODE * * STARTS HERE ***/
     
    int main()
    {
        //freopen("D:\common_text\code_stream\in.txt","r",stdin);
        //freopen("D:\common_text\code_stream\out.txt","w",stdout);
        
        string str;
        cin>>str;
        ll ans=0ll;
        int flag=1;
        for(int i=1;i<sz(str);++i)
        {
            if(str[i]!='0')
            {
                flag=0;
            }
        }
        int len=sz(str);
        if(flag)
        {
            len--;
        }
        ans=(len+1)/2;
        cout<<ans<<endl;
        
        
        
        return 0;
    }
     
    inline void getInt(int* p) {
        char ch;
        do {
            ch = getchar();
        } while (ch == ' ' || ch == '
    ');
        if (ch == '-') {
            *p = -(getchar() - '0');
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 - ch + '0';
            }
        }
        else {
            *p = ch - '0';
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 + ch - '0';
            }
        }
    }
     
    
    本博客为本人原创,如需转载,请必须声明博客的源地址。 本人博客地址为:www.cnblogs.com/qieqiemin/ 希望所写的文章对您有帮助。
  • 相关阅读:
    vue-cli中安装方法
    css初始化
    VUE基本指令(v-model,v-html,v-text,v-bind,v-if,v-show,v-for,v-on:click,组件,过滤器)
    在浏览器上安装 Vue Devtools工具
    vue前端框架面试问题汇总
    git修改用户名、邮箱
    js对字符串的一些操作方法
    11款JavaScript颜色拾取插件推荐
    vue-devtools的安装与使用
    JS里的居民们4-数组((堆)队列
  • 原文地址:https://www.cnblogs.com/qieqiemin/p/11386500.html
Copyright © 2020-2023  润新知