题目 3330: 蓝桥杯2025年第十六届省赛真题-01 串

题目 3330: 蓝桥杯2025年第十六届省赛真题-01 串

时间限制: 2s 内存限制: 192MB 提交: 310 解决: 24

题目描述

给定一个由 0, 1, 2, 3 · · · 的二进制表示拼接而成的长度无限的 01 串。

其前若干位形如 011011100101110111 · · · 。

请求出这个串的前 x 位里有多少个 1 。

输入格式

输入的第一行包含一个正整数 x 。

输出格式

输出一行包含一个整数表示答案。

样例输入复制

7

样例输出复制

5

提示

【样例说明】

给定的串的前 7 位为 0110111 。

【评测用例规模与约定】

对于 60% 的评测用例,x ≤ 106 ;

对于所有评测用例,1 ≤ x ≤ 1018 。

1.分析

1个测试点没过,记录一下这种算法。

如果你们能该全过,求告诉!

2.代码

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
typedef long long LL;
LL x, re, t=1;
void check(LL i) {
    vector<int> v;
    while (i) {
        v.push_back(i % 2);
        i /= 2;
    }
    for (int i = v.size() - 1; i >= 0&&x>0; i--,x--) {
        if (v[i] == 1) re++;
    }
}
int main() {
    cin >> x;
    x--;
    while (x >= t * pow(2, t - 1)) {
        re += (t - 1) * pow(2, t - 2) + pow(2, t - 1);
        x -= t * pow(2, t - 1);
        t++;
    }
    for ( LL i = pow(2, t - 1); x>0; i++) {
        check(i);
    }
    cout << re << endl;
    return 0;
}
相关推荐
青少儿编程课堂13 分钟前
蓝桥杯青少组省考(11/9报名截止·11/22开考)+电子学会图形化考级+信息素养大赛:校园极速跑酷闯关解析
蓝桥杯·scratch·图形化编程·信息素养大赛·电子学会考级
CoderYanger2 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
lsc_blog1 天前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
Pniubi1 天前
力扣3无重复字符的最长字串(滑动窗口)
算法·leetcode·职场和发展
axe_hu2 天前
AI产品经理的职业规划与学习路径
人工智能·职场和发展·产品经理·学习方法
1M553 天前
AI应用后端工程(03):回答输出一半就断了:AI 流式接口如何定义成功与失败?
python·面试·职场和发展·计算机专业·agent开发
CoderYanger3 天前
Java EE 进阶:6.SpringBoot 配置文件(第二弹)
java·spring boot·spring·面试·职场和发展·java-ee·程序员创富
weixin_307779134 天前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
天真小巫4 天前
2026.11.1总结
职场和发展
驭渊的小故事5 天前
LeetCode 算法题解:滑动窗口与数组合并的实战应用
算法·leetcode·职场和发展