【bzoj4174】tty的求助 莫比乌斯反演
Description

Input
输入仅有一行。
Output
输出共1行,由亍结果过大,所以请输出上式对998244353 取模的结果。
Sample Input
Sample Output
题解:
(吐槽:博客园的数学公式好慢……)
先%一发po姐……不看题解根本没思路啊……
$\sum_{n=1}^{N}\sum_{m=1}^{M}\sum_{k=0}^{m-1}\lfloor\frac{nk+x}{m} \rfloor$
$我们先考虑后半部分$
$\;\;\;\,\sum_{k=0}^{m-1}\lfloor\frac{nk+x}{m} \rfloor$
$=\sum_{k=0}^{m-1}\lfloor\frac{nk-nk\,\bmod\, m+x+nk\,\bmod\,m}{m} \rfloor$
$=\sum_{k=0}^{m-1}\lfloor\frac{nk\,\bmod\,m+x}{m} \rfloor+\sum_{k=0}^{m-1}\frac{nk-nk\,\bmod\,m}{m}$
$考虑前半部分,同时设d=(n,m)$
$\;\;\,\;\sum_{k=0}^{m-1}\lfloor\frac{nk\,\bmod\,m+x}{m} \rfloor$
$=d\sum_{k=0}^{\frac{m}{d}-1}\lfloor\frac{kd}{m} \rfloor$
证明:首先设$(n,m)==d$,那么对同余方程$\;\;xn\equiv kd(\bmod m),k\in[0,\frac{m}{d}-1]$,我们知道一定存在整数解$x$,满足该式,同时有由于方程多解,且每个解的间隔应为$\frac{m}{d}$,所以$kd$在$\sum_{k=0}^{m-1}nk\,\bmod\,m$中共出先了$d$次
(我们仿照最开始将nk拆离的方法)
$=d\sum_{k=0}^{\frac{m}{d}-1}\lfloor\frac{kd+x\,\bmod\,m+x-x\,\bmod\,m}{m}\rfloor$
$=d(\sum_{k=0}^{\frac m d-1}\lfloor \frac{kd+x\,\bmod\,m}m \rfloor+\sum_{k=0}^{\frac m d-1} \frac{x-x\,\bmod\,m}m) $
$我们知道kd<m\;\;\;x\bmod m<m $
$=d(\sum_{k=0}^{\frac m d-1}[kd\geq m-x\bmod m]+\frac md\frac{x-x\,\bmod\,m}m) $
$=d(\sum_{k=0}^{\frac md-1}[\,k\geq\lceil \frac{m-x\,\bmod\,m}{d}\rceil\,]+\frac{x-x\,\bmod\,m}{d})$
$=d(\lfloor\frac{x\,\bmod\,m}{m}\rfloor+\lfloor \frac xd\rfloor-\lfloor \frac{x\,\bmod\,m}{d}\rfloor)$
$=d\lfloor \frac xd\rfloor$
我们再来看最开始另外两项
$1.\sum_{k=0}^{m-1}\frac{nk}m=\frac nm \frac{m(m-1)}2=\frac{nm-n}{2}$
$2.\sum_{k=0}^{m-1}\frac{nk\,mod\,m}m(我们同样用到d)$
$=d\sum_{k=0}^{\frac md-1}\frac{dk}m=\frac {d^{2}}m\frac{\frac md(\frac md-1)}{2}=\frac{m-d}{2}$
$Ans=\sum_{n=1}^{N}\sum_{m=1}^{M}(d\lfloor\frac xd \rfloor+\frac {d+nm-n-m}2)$
$\;\;\;\;\;\;\;\,=\frac 12\sum_{n=1}^{N}\sum_{m=1}^{M}(2d\lfloor\frac xd \rfloor+ d+nm-n-m)$
$设S(n)=\frac{n(n+1)}2$
$\;\;\;\;\;\;\;\,=\frac 12(\sum_{n=1}^{N}\sum_{m=1}^{M}(2d\lfloor\frac xd \rfloor+ d)+S(N)S(M)-MS(N)-NS(M))$
$\;\;\;\;\;\;\;\,=\frac 12(\,\sum_{d=1}^{min(N,M)}(2d\lfloor\frac xd \rfloor+ d)\sum_{t=1}^{\min(\lfloor\frac Nd\rfloor,\lfloor\frac Md\rfloor)}\mu(t)\lfloor \frac N{dt}\rfloor\lfloor \frac M{dt}\rfloor\;+S(N)S(M)-MS(N)-NS(M)\,)$
对于后面我们O(1)求出即可,前面枚举每一个d带入计算即可。
时间复杂度$\sum_{i=1}^{n}\sqrt \frac ni\approx\sqrt n\int_{1}^{n}x^{-0.5}dx=2n-2\sqrt n $
代码:
/**************************************************************
Problem: 4174
User: Troywar
Language: C++
Result: Accepted
Time:964 ms
Memory:5100 kb
****************************************************************/ #include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const ll mod=;
inline ll powmod(ll a, ll b){
ll ans=;
while(b){
if(b&) ans=ans*a%mod;
a=a*a%mod;
b>>=;
}return ans;
}
inline ll S(int x){
return 1LL*x*(x+)/%mod;
}
const int N=+;
short miu[N];
bool vis[N];
int sum[N],prim[N/],num;
double x;
inline void init (){
miu[]=sum[]=;
for(int i=;i<N;i++){
if(!vis[i]){
miu[i]=-;
prim[++num]=i;
}for(int j=;i*prim[j]<N;j++){
vis[i*prim[j]]=true;
if(i%prim[j]==){
miu[i*prim[j]]=;
break;
}miu[i*prim[j]]=-miu[i];
}
sum[i]=sum[i-]+miu[i];
} }
inline ll get_sum(int n,int m){
ll ans=;
for(int i=,pos;i<=n;i=pos+){
pos=min(n/(n/i),m/(m/i));
ans+=1LL*(sum[pos]-sum[i-])*(n/i)%mod*(m/i)%mod;
ans%=mod;
}
return (ans+mod)%mod;
}
int n,m;
int main(){
scanf("%d%d%lf",&n,&m,&x);
init();
ll ans=S(n)*S(m)%mod-S(n)*m%mod-S(m)*n%mod;
ans=(ans%mod+mod)%mod;
if(n>m) n^=m^=n^=m;
for(int i=;i<=n;i++){
ans+=(2ll*i*(ll)(x/i)+i)%mod*get_sum(n/i,m/i)%mod;
ans%=mod;
}
ans*=powmod(,mod-);
ans%=mod;
printf("%lld\n",(ans+mod)%mod);
}
/*
15674 234561 126.156
*/
【bzoj4174】tty的求助 莫比乌斯反演的更多相关文章
- BZOJ 4174 tty的求助 莫比乌斯反演
题目大意:求∑Nn=1∑Mm=1∑m−1k=0⌊nk+xm⌋ mod 998244353 如果n和m都已经确定了.如今要求这坨玩应: ∑m−1k=0⌊nk+xm⌋ =∑m−1k=0(⌊nk%m+xm⌋ ...
- hdu1695 GCD(莫比乌斯反演)
题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...
- BZOJ 2154: Crash的数字表格 [莫比乌斯反演]
2154: Crash的数字表格 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2924 Solved: 1091[Submit][Status][ ...
- BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4032 Solved: 1817[Submit] ...
- Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)
题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...
- 莫比乌斯函数筛法 & 莫比乌斯反演
模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...
- 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2371 Solved: 1143[Submit][Sta ...
- POI2007_zap 莫比乌斯反演
题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...
- hdu.5212.Code(莫比乌斯反演 && 埃氏筛)
Code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
随机推荐
- 面试心得随谈&线程并发的总结
---恢复内容开始--- 线程同步有两种实现方式: 基于用户模式实现和用内核对象实现.前者偏于轻量级,性能也更好,但是只能用于同一进程间的线程同步,后者重量级,性能消耗更大,跨进程. 研读了一下win ...
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- RxJava 2.x 使用最佳实践
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76443347 本文出自[赵彦军的博客] 以前写过 Rxjava 系列教程, 如下所 ...
- spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法
在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...
- java web 开发实战经典(一)
一.jsp三种Scriptlet(脚本小程序) 1.<% %> :定义局部变量.编写语句等. <% String str = "hello world!";// ...
- vim编辑器常见命令归纳大全
Esc:命令行模式 i:插入命令 a:附加命令 o:打开命令 c:修改命令 r:取代命令 s:替换命令 以上进入文本输入模式 : 进入末行模式 末行模式: w:保存 q:退出,没保存则无法退出 w ...
- springmvc 请求经过controller后静态资源无法访问的问题
经过RequestMapping(“xx”)后 转发请求时会在url里面附带地址, 导致访问静态资源文件失败, 解决办法是在 spring-mvc.xml文件中加上 <mvc:default-s ...
- 网络-tcp
1.TCP:面向连接可靠的传输协议,全拼:Transmission Control Protocol 2.UDP:用户数据报协议 全拼:User Datagram protocol 不是面向连接的 ...
- Maven通俗讲解
也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难. 本片文章面向Maven初学者,希望能让其以最快的速度了解Maven ...
- capwap学习笔记——capwap的前世今生(转)
1 capwap的前世今生 1.1 胖AP.瘦AP.AC 传统的WLAN网络都是为企业或家庭内少量移动用户的接入而组建的.因此,只需要一个无线路由器就可以搞定了,就好像现在家用的无线路由器就是胖AP. ...