题目 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;
}
相关推荐
AlenTech3 小时前
207. 课程表 - 力扣(LeetCode)
算法·leetcode·职场和发展
练习时长一年4 小时前
LeetCode热题100(杨辉三角)
算法·leetcode·职场和发展
_OP_CHEN7 小时前
【算法基础篇】(四十五)裴蜀定理与扩展欧几里得算法:从不定方程到数论万能钥匙
算法·蓝桥杯·数论·算法竞赛·裴蜀定理·扩展欧几里得算法·acm/icpc
我命由我123458 小时前
Photoshop - Photoshop 工具栏(58)锐化工具
学习·ui·职场和发展·求职招聘·职场发展·学习方法·photoshop
踩坑记录8 小时前
leetcode hot100 438. 找到字符串中所有字母异位词 滑动窗口 medium
leetcode·职场和发展
YuTaoShao8 小时前
【LeetCode 每日一题】1458. 两个子序列的最大点积——(解法三)状态压缩
算法·leetcode·职场和发展
橘颂TA9 小时前
【剑斩OFFER】算法的暴力美学——leetCode 946 题:验证栈序列
c++·算法·leetcode·职场和发展·结构与算法
wen__xvn9 小时前
力扣第 484 场周赛
算法·leetcode·职场和发展
YuTaoShao9 小时前
【LeetCode 每日一题】865. 具有所有最深节点的最小子树——(解法一)自顶向下
算法·leetcode·职场和发展
2301_800895109 小时前
hh的蓝桥杯每日一题--拔河
职场和发展·蓝桥杯