博客
关于我
bzoj 2956: 模积和
阅读量:259 次
发布时间:2019-03-01

本文共 1174 字,大约阅读时间需要 3 分钟。

题意:求
nimj(n mod i)(m mod j)(i!=j)

题解:

我各种sb错误荒废了一上午啊啊啊。

先无视限制:即

ni(n mod i)mj(m mod j)
同bzoj 1257()
然后要减去相等的情况。
min(n,m)i(n mod i)(m mod i)
=min(n,m)i(nnii)(mmii)
=min(n,m)i(nm)(nim+min)+nimii2
然后就能分块了。

注意:乘一步mod一步啊啊啊!!!

code:

#include
#include
#include
#include
#define LL long longusing namespace std;const LL mod=19940417,inv=3323403;LL sum(LL l,LL r){ return ((LL)(r-l+1)*(LL)(l+r)/2)%mod;}LL sum_2(LL n){ return (LL)n*(LL)(n+1)%mod*(LL)(2*n+1)%mod*inv%mod;}LL solve(LL n){ LL ans=0;LL pos; for(LL i=1;i<=n;i=pos+1) { pos=(n/(n/i)); ans=(ans+((LL)n*(pos-i+1)-(LL)(n/i)*sum(i,pos))%mod)%mod; } return ans;}LL solve2(LL n,LL m){ if(n>m) swap(n,m); LL ans=0;LL pos; for(LL i=1;i<=n;i=pos+1) { pos=min(n/(n/i),m/(m/i)); LL t1=n*m%mod*(pos-i+1)%mod,t2=sum(i,pos)%mod*(n*(m/i)%mod+m*(n/i)%mod)%mod,t3=(m/i)*(n/i)%mod*(sum_2(pos)-sum_2(i-1)+mod)%mod; t3=(t3+mod)%mod; ans=((ans+(t1-t2+t3)%mod)+mod)%mod; } return ans;}LL n,m;int main(){ scanf("%lld %lld",&n,&m); printf("%lld",((solve(n)*solve(m)%mod-solve2(n,m))%mod+mod)%mod);}

转载地址:http://rdza.baihongyu.com/

你可能感兴趣的文章
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>
Mysql在Linux运行时新增配置文件提示:World-wrirable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored 权限过高导致
查看>>
Mysql在Windows上离线安装与配置
查看>>
MySQL在渗透测试中的应用
查看>>
Mysql在离线安装时启动失败:mysql服务无法启动,服务没有报告任何错误
查看>>
Mysql在离线安装时提示:error: Found option without preceding group in config file
查看>>
MySQL基于SSL的主从复制
查看>>
MySQL基础day07_mysql集群实例-MySQL 5.6
查看>>
Mysql基础命令 —— 数据库、数据表操作
查看>>
Mysql基础命令 —— 系统操作命令
查看>>
MySQL基础学习总结
查看>>
mysql基础教程三 —常见函数
查看>>
mysql基础教程二
查看>>
mysql基础教程四 --连接查询
查看>>