jzoj5894
先前綴和一發,問題表示求[0-l2][0-r2]滿足條件的數的個數
假設可以把某一個數拆分成[前面任意個數][00…0-11…1(個數相同)]的區間
那麼問題會簡單的多,因為任意一個a位的整數分別xor[00…0(a個)-11…1(a個)]的結果會取遍00…0-11…1中的任意一個整數
這說明,我們拆出的區間大小都是2的冪次
很顯然想到x&-x操作,這個操作可以把某一個數最後的1去掉,從而新數和舊數形成的區間的大小是2的冪次
但是,x&-x操作是適用于區間開頭為1的情況,所以我們可以將要求的數加上1,記為b
這樣,b-1和b-b&-b就變成了一個合法的結尾為00…0-11…1的區間
我們可以枚舉每一個這樣子的區間,記00…0-11…1的長度,第一個區間為a,第二個為b
那麼異或起來的結果就是[兩個區間在max(a,b)之前的長度異或起來][max(a,b)個00…0-11…1]
這樣,問題就變成了求出連續區間中能被m整除的數的個數
實現上,我們可以枚舉a+1和b+1的每一個1位,則a+1在這一位後面和b+1在這一位後面的數全為00…0-11…1
然後我們可以把a和b的這一位去掉取前面的所有位,這樣可以計算出前面的部分
注意別忘記求出來的結果乘以另一個較短的位的00…0-11…1的數的個數
代碼:
#include<bits/stdc++.h>
using namespace std;
#define mo 998244353ll
typedef long long ll;
ll m;
ll get(ll l,ll r){
if(l%m==0)return (r/m-l/m+1ll+mo)%mo;
return (r/m-l/m+mo)%mo;
}
ll ct(ll a,ll b){
ll ans=0;
for(ll i=61;i>=0;i--)
for(ll j=61;j>=0;j--)
if((a&(1ll<<i))&&(b&(1ll<<j))){
ll m1=max(i,j),m2=min(i,j);
ll pre=((a^(1ll<<i))^(b^(1ll<<j)))&(~((1ll<<m1)-1ll));
ll suf=pre+(1ll<<m1)-1ll;
ans=(ans+get(pre,suf)*((1ll<<m2)%mo)%mo)%mo;
}
return ans;
}
int main(){
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
ll a,b,c,d;
scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&m);
printf("%lld",(ct(b+1,d+1)-ct(b+1,c)-ct(a,d+1)+ct(a,c)+mo)%mo);
}
jzoj5894的更多相关文章
- JZOJ5894【NOIP2018模拟10.5】同余方程
题目 Description
随机推荐
- DB2中的数据类型
DB2中的数据类型DB2内置数据类型可以分成数值型(numeric).字符串型(character string).图形字符串(graphic string).二进制字符串型(binary strin ...
- 五步打造APP节日主题设计:以Lofter新年图标设计为例
我们需要做有依据,有逻辑,有理念的设计,需要发散思维,整合创意,严谨输出,让设计经得起推敲 前言 2018年春节已远去,一直想把Lofter新年Logo设计思路分享给大家,直到现在才整理出来,希望 ...
- phpstrom+xdebug配置
1.确认是否安装了xdebug 2.在php.ini文件中配置如下 [xdebug] zend_extension="D:\wamp\php-5.6.2-x64\ext\php_xdebug ...
- iis 应用程序预热
<applicationPools> <add name="appname" managedRuntimeVersion="v4.0" sta ...
- 2018.10.19 NOIP训练 yk赚钱记(01分数规划)
传送门 其实是一个裸的最优比率生成树. 注意精度的控制就行了. 代码
- 2018.09.09 poj2949Word Rings(01分数规划+spfa判环)
传送门 这题要先巧妙的转化一下. 对于每个字符串,我们把头尾的两个小字符串对应的点连边,边权是这个字符串的长度. 这样最多会出现26*26个点. 这个时候就只用求出边权和跟边数的最大比值了. 这个显然 ...
- web页面中a标签下载文件包含中文下载失败的解决
之前用到的文件下载,文件名都是时间戳的形式或者英文名.下载没有问题.后来附件有中文后写在页面是下面效果,点击下载,下载失败. 对应链接拿出来.是如下效果 之前用了各种其他办法都不理想,比如转义什么的. ...
- UVa 1572 Self-Assembly (构造+拓扑排序。。。。。)
题意:给定n个带标号的正方形,标号要么是一个大写字母加一个+或-,要么是00, 当且仅当大写字母相同并且符号相反时可以连接,问你给定的能不能拼成一个无限大的的东西. 析:说实话,真心没有看出来是拓扑排 ...
- day3之函数的初始及进阶
函数初始 函数的定义与调用 ''' def 函数名 (参数): 函数体 函数名:设定与变量相同 执行函数: 函数名() ''' 函数的返回值 # 函数返回值 return ''' 1.遇到return ...
- poj2462
看八戒在做这个题,我也做了做.. 坑很多,还是要注意细节.不得不吐槽,难道又到了计算几何只能套模板否则就一串WA的情况了么! 要不是八戒做出来了,这题我估计我也就扔到这里了..哥不服啊~所以得做出来! ...