简单般Bzoj2154: Crash的数字表格

Sol

增加了数据组数T<=10000

推到

\(ans=\sum_{d=1}^{N}d*\sum_{i=1}^{\lfloor\frac{N}{d}\rfloor}\mu(i)*i^2*\frac{(\lfloor\frac{N}{d*i}\rfloor + 1) * \lfloor\frac{N}{d*i}\rfloor}{2}*\frac{(\lfloor\frac{M}{d*i}\rfloor + 1) * \lfloor\frac{M}{d*i}\rfloor}{2}\)

\(设S(i)=\frac{(i+1)*i}{2},将d*i换成k\)

\(原式=\sum_{k=1}^{N}S(\lfloor\frac{N}{k}\rfloor)*S(\lfloor\frac{M}{k}\rfloor)*k*\sum_{i|k}i*\mu(i)\)

\(设f(n)=\sum_{i|n}i*\mu(i),它是个积性函数,可以线性筛\)

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(1e7 + 1), MOD(1e8 + 9); IL ll Read(){
char c = '%'; ll x = 0, z = 1;
for(; c > '9' || c < '0'; c = getchar()) if(c == '-') z = -1;
for(; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0';
return x * z;
} int prime[_], f[_], num, s[_];
bool isprime[_]; IL void Prepare(){
isprime[1] = 1; s[1] = f[1] = 1;
for(RG int i = 2; i < _; ++i){
if(!isprime[i]) prime[++num] = i, f[i] = 1 - i;
for(RG int j = 1; j <= num && i * prime[j] < _; ++j){
isprime[i * prime[j]] = 1;
if(i % prime[j]) f[i * prime[j]] = 1LL * f[i] * f[prime[j]] % MOD;
else{ f[i * prime[j]] = f[i]; break; }
}
s[i] = (s[i - 1] + 1LL * i * f[i] % MOD) % MOD;
}
} IL ll S(RG ll x){ return x * (x + 1) / 2 % MOD; } int main(RG int argc, RG char *argv[]){
Prepare();
for(RG ll T = Read(), n, m; T; --T){
RG ll ans = 0; n = Read(); m = Read();
if(n > m) swap(n, m);
for(RG ll i = 1, j; i <= n; i = j + 1){
j = min(n / (n / i), m / (m / i));
(ans += 1LL * (s[j] - s[i - 1] + MOD) % MOD * S(n / i) % MOD * S(m / i) % MOD) %= MOD;
}
printf("%lld\n", (ans + MOD) % MOD);
}
return 0;
}

BZOJ2693jzptab的更多相关文章

随机推荐

  1. JetBrains Rider 破解 (ideaIU等等开发工具都通用)2018-02-27

    贴一下Rider下载地址:(下载不了可以用百度云离线下载) Win:https://download.jetbrains.com/resharper/JetBrains.Rider-2017.3.1. ...

  2. appium滑动操作(向上、向下、向左、向右)

    appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...

  3. 使用Ajax发送http请求(get&post请求)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 同步和异步 同步和异步的概念 同步:必须等待前面的任务完成,才能继续后面 ...

  4. cassandra 鉴权

    1. 修改cassandra.yaml配置文件.启用用户密码登录形式. authenticator: PasswordAuthenticator authorizer: CassandraAuthor ...

  5. javascript selenium全套教程发布

    为什么有这个系列 目前javascript生态非常丰富,越来越多的人开始用js去做前端的ui测试了.而selenium是web ui测试的标准解决方案,所以一套js的selenium教程是很有必要的. ...

  6. Spring中的@scope注解

    默认是单例模式,即scope="singleton".另外scope还有prototype.request.session.global session作用域.scope=&quo ...

  7. 剑指offer面试题-Java版-持续更新

    最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构 ...

  8. Vscode 插件

    HTML Snippets Markdown All in One Markdown PDF Markdown Priview Enhanced Markdown TOC Open HTML in D ...

  9. nyoj281 整数中的1(二) 数位DP

    和整数中的1一毛一样.就是输入时改了一下罢了. AC代码: #include<cstdio> const int maxn = 35; int w[maxn], h[maxn]; void ...

  10. MAVEN自动发布更新本地和远程仓库

    1.本地仓库 的更新 mvn  clean package install  2.远程 仓库 的更新 mvn clean package deploy 2.1工程文件pom.xml的设置 <bu ...