【 BowWow and the Timetable CodeForces - 1204A 】【思维】

题目链接
可以发现
十进制4 对应 二进制100
十进制16 对应 二进制10000
十进制64 对应 二进制1000000
可以发现每多两个零,4的次幂就增加1.
用string读入题目给定的二进制数字,求出其长len,当len为奇数时,第一位为1,后面的位数如果都为0,则输出len,如果有一个不为0,则输出len+1;
当len为偶数时,则输出len。(之所以这样输出是因为题目给定4的次幂是从0开始的)

#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
string s;
int main()
{
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    cin >> s;
    int len = s.length();
    if(len % 2 == 0)
        printf("%d\n", len / 2);
    else
    {
        int flag = 0;
        for(int i = 1;i < len; i++)
        {
            if(s[i] == '1')
            {
                printf("%d\n", len / 2 + 1);
                flag = 1;
                break;
            }
        }
        if(!flag)
            printf("%d\n", len / 2);
    }

}

原文地址:https://www.cnblogs.com/KeepZ/p/11657398.html

时间: 2024-10-01 17:35:43

【 BowWow and the Timetable CodeForces - 1204A 】【思维】的相关文章

Queue CodeForces - 353D (思维dp)

https://codeforces.com/problemset/problem/353/D 大意:给定字符串, 每一秒, 若F在M的右侧, 则交换M与F, 求多少秒后F全在M左侧 $dp[i]$为位置$i$处的$F$复位所花费时间, 有 $dp[i] = max(dp[i-1]+1,cnt_i)$, $cnt_i$为前$i$位$M$的个数 $dp$最大值即为答案 #include <iostream> #include <algorithm> #include <cstd

CodeForces 1131B(思维题)

You still have partial information about the score during the historic football match. You are given a set of pairs (ai,bi)(ai,bi), indicating that at some point during the match the score was "aiai: bibi". It is known that if the current score

CodeForces - 417B (思维题)

Crash Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status Description During the "Russian Code Cup" programming competition, the testing system stores all sent solutions for each participant. We know th

CodeForces - 417A(思维题)

Elimination Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status Description The finalists of the "Russian Code Cup" competition in 2214 will be the participants who win in one of the elimination rounds.

Timetable CodeForces - 946D (预处理+背包)

题意:n天m节课,最多可以逃k节课,每天在学校待的时间为该天上的第一节课到最后一节课持续的时间.问怎样逃课可以使这n天在学校待的时间最短,输出最短的时间. 分析: 1.预处理出每天逃j节课时在学校待的最短时间.t[i][j] 2.dp[i][j]为截止到第i天逃j节课待在学校的最短时间. #include<bits/stdc++.h> using namespace std; const int MAXN = 500 + 10; const int INF = 0x3f3f3f3f; char

codeforces 940E 思维,dp

E. Cashback 题意: 给出常数 c ,定义长度为 n 的序列的价值为:舍去前 (floor)( n/c ) 个最小的数,余下的数的和. n 个数的序列,要你把它们分隔成多个序列,顺序不能改变.最后的答案为 所有序列的价值的和,求最小的答案. tags: 我们可以推测出:最后最优的答案,序列长度一定是 c 或 1 .因为如果有 k*c 长度的序列,我们把它分成 k 个长度为 c 的最优: 如果有 k*c+m 的长度序列,那么最后分出 m 个长度为 1 的序列也是更优. 所以就直接 dp

Codeforces 1093C (思维+贪心)

题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤?≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+1}\) 求出序列a (输出任意一种答案即可) 分析 为了保证序列不下降,我们采用贪心的思想,先假设\(a_i=a_{i-1}\),这样给后面的数留有的余地更大 然后计算出\(a_{n-i+1}=b_i-a_i\),如果\(a_{n-i+1}>a_{n-i+1+1}\),即不满足不下降的条件,则进行

Doors Breaking and Repairing CodeForces - 1102C (思维)

You are policeman and you are playing a game with Slavik. The game is turn-based and each turn consists of two phases. During the first phase you make your move and during the second phase Slavik makes his move. There are nn doors, the ii-th door ini

Codeforces 1110C (思维+数论)

题面 传送门 分析 这种数据范围比较大的题最好的方法是先暴力打表找规律 通过打表,可以发现规律如下: 定义\(x=2^{log_2a+1}\) (注意,cf官方题解这里写错了,官方题解中定义\(x=2^{log_2a}\)是有问题的 (1) 若\(a \neq 2^x-1\) ? 则当\(b=(2^x-1)\) xor a时a xor b=b=\(2^x-1\) ,a and b=0 ? gcd(a xor b,a and b)=\(2^x-1\)有最大值 ? (异或的性质,若a xor c =