首页 > 其他分享 >小蓝的二进制询问

小蓝的二进制询问

时间:2024-07-19 09:55:14浏览次数:8  
标签:ok 二进制 res ll leq 小蓝 询问 mod

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f3f
using namespace std;
using ll = long long;
const int N = 4e5 + 7;
const int mod = 998244353;
ll f(ll x, ll k)
{
ll y =pow(2,(k + 1));
ll ok = y / 2;
x++;
ll res = x / y * ok; // 循环节内部分
ll r = x % y;
r -= ok;
if (r > 0)
res += r; // 计算循环节多余部分
return res;
}
void solve()
{
ll l, r;
cin >> l >> r;
ll ans = 0;
for (ll i = 61; i >= 0; i--)
{
ll p = (f(r, i) % mod - f(l - 1, i) % mod ) % mod;
ans = (ans + p) % mod;
}
cout << ans << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _;
cin >> _;
while (_--)
solve();
return 0;
}
// //f(ll x, ll k) 函数计算了在第 k 位上,区间 [1, x] 中所有数的二进制表示中1的个数的总和。
// y = 1ll << (k + 1);:计算 2^(k+1),即第 k 位的循环节长度。
// ok = y / 2;:循环节内半段的长度。
// x++;:因为要计算 [1, x] 的范围,所以 x 需要加1。
// res = x / y * ok;:计算完整循环节内1的个数。
// r = x % y; r -= ok; if (r > 0) res += r;:计算循环节多余部分的1的个数。
// 返回 res,即 [1, x] 区间内第 k 位的1的个数总和。//

链接:登录—专业IT笔试面试备考平台_牛客网牛客网是互联网求职神器,C++、Java、前端、产品、运营技能学习/备考/求职题库,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力icon-default.png?t=N7T8https://ac.nowcoder.com/acm/contest/86639/D
来源:牛客网
 

小蓝有 ttt 组询问,每次给定两个数字 lll,rrr 你需要计算出区间 [l,r]\left [ l,r \right ][l,r] 中所有整数在二进制下1的个数之和。由于结果特别大,你只需要计算出结果模998244353之后的值即可。

输入描述:

第一行输入一个正整数 ttt 表示询问组数。

接下来每行两个整数 l,rl,rl,r 。

(1≤t≤105)\left ( 1\leq t\leq 10^{5} \right )(1≤t≤105)

(1≤l≤r≤1018)\left ( 1\leq l\leq r\leq 10^{18} \right )(1≤l≤r≤1018)

输出描述:

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

示例1

输入

复制1 1 5

1
1 5

输出

复制7

7

说明

1~5的二进制下分别是1 10 11 100 101共有7个1

标签:ok,二进制,res,ll,leq,小蓝,询问,mod
From: https://blog.csdn.net/2301_80160438/article/details/140541044

相关文章

  • BLOB类型二进制数据转换成Bitmap类型数据,并显示成缩略图,类似手机相册的封面
    classDemoDuilib:publicWindowImplBase,publicCButtonUI{public:DemoDuilib();~DemoDuilib();voidtest();staticstd::vector<uint8_t>thumbData;//存储BLOB类型二进制数据private:voidPaintStatusImage(HDChDC)override;//保持纵横比并......
  • Hypertable 自编译二进制包安装
    HOWTOINSTALL==============Youcaneitherdownloadanappropriatebinarypackageforyourplatformorbuildfromsource.Binarypackagescanbeobtainedfrom[here](Download|Hypertable-BigData.BigPerformance).See[thiswikipage](http://code.......
  • window环境的openssl二进制发行版安装
    当你去openssl官网找二进制发行版的时候,很可惜,openssl不提供任何二进制发行版的版本,虽然有第三方,但openssl不推荐也不建议任何一个。点击到这个位置,会有一些官方的说明和第三方的链接。最终你会到达这个位置,也就是openssl二进制发行版的列表页面。自行选择。在此奉上当前最......
  • 5.1编写ansibleplaybook批量安装二进制
    本节重点介绍:ansibleplaybook编写rsyslog和logrotateservice_deployyaml的编写配置机器直接的ssh免密码登录节点主机名host解析节点主机名写入hostsecho"192.168.3.200prome-master01">>/etc/hostsecho"192.168.3.201prome-node01">>/etc/hosts......
  • 求解一个数的二进制最高位
    求解一个数的二进制最高位是一个常见问题。具体来说,5的二进制是101,其最高位在第2位(假定最低位是0)。30的二进制是11110,最高位是第4位。我们怎么求解这个位数呢?方案一:逐位遍历从低位向高位逐渐遍历即可,无需解释。当然也有很多种写法。这里提供一种。inthighestBit(intn......
  • Kubernetes高可用集群二进制离线部署(Runtime Docker)
    Kubernetes高可用集群二进制部署(RuntimeDocker)Kubernetes(简称为:k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务......
  • [CINTA] 具体数论与代数阅读笔记——第一章 整数和二进制(含加、乘、除)
    前言这本书说自己是计算机专业数学入门之入门,成为读者攻读其他经典著作的垫脚石,但个人以为足矣替换掉本校内不知所云的、抽象的、让学生考完后马上全忘的那些课程。本书的GitHub仓库在这里。该笔记并非单纯的整理归纳,而是记录陆爻齐在书中找到的对自己很有感触的部分。闲话......
  • Vue3 pdf.js将二进制文件流转成pdf预览
    好久没写东西,19年之前写过一篇Vue2将pdf二进制文件流转换成pdf文件,如果Vue2换成Vue3了,顺带来一篇文章,pdf.js这个东西用来解决内网pdf预览,是个不错的选择。首先去pdfjs官网,下载需要的文件然后将下载的东西放到public文件下接下来看一下代码<auto-dialogtitle="PDF预......
  • C#——二进制流序列化和反序列化
    C#二进制流序列化和反序列化在C#中,可以使用BinaryFormatter来进行二进制的序列化和反序列化。首先,定义一个可序列化的类[Serializable]publicclassMyObject{publicintIntProperty{get;set;}publicstringStringProperty{get;set;}}使用BinaryFo......
  • WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档
    在日常办公场景中,我们经常会遇到这种场景:我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中,如何从数据库中读取二进制数据,以二进制数据作为参数,然后加载到浏览器的Office窗口,实现在线编辑Office的功能呢?猿大师办公助手是猿大师旗下的一款在浏览器......