【51Nod 1190】最小公倍数之和 V2
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1190
b∑i=aib(i,b)=bb∑i=ai(i,b)=b∑d|bb∑i=a[d|i][(id,bd)=1]id=b∑d|bbd∑i=⌈ad⌉[(i,bd)=1]i=b∑d|bbd∑i=⌈ad⌉i∑d′|i,d′|bdμ(d′)=b∑d|b∑d′|bdμ(d′)bdd′∑i=⌈add′⌉id′=b∑T|b∑d|Tμ(d)bT∑i=⌈aT⌉id=b∑T|b(⌈aT⌉+bT)(bT−⌈aT⌉+1)2∑d|Tμ(d)d
∑d|Tμ(d)d=∏(1−pi),只要确定T的质因子就可以确定∑d|Tμ(d)d的值。
如果循环枚举T找b的约数,无法快速计算T的质因子。
可以dfs枚举b的约数T,动态计算∑d|Tμ(d)d的值。
时间复杂度O(T√n)。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 100000;
const int p = 1000000007;
const int ni2 = 500000004;
bool notp[N];
int a, b, tot, P[N], c[N], num = 0, prime[N];
void Euler_shai() {
for (int i = 2; i <= N; ++i) {
if (!notp[i]) prime[++num] = i;
for (int j = 1; j <= num && prime[j] * i <= N; ++j) {
notp[prime[j] * i] = true;
if (i % prime[j] == 0) break;
}
}
}
void pre(int x) {
tot = 0;
for (int i = 1, pi = 2; i <= num && pi * pi <= x; pi = prime[++i])
if (x % pi == 0) {
P[++tot] = pi; c[tot] = 0;
while (x % pi == 0) x /= pi, ++c[tot];
}
if (x > 1)
P[++tot] = x, c[tot] = 1;
}
int ans;
void dfs(int tmp, int T, int f) {
if (tmp > tot) {
int l = a / T, r = b / T;
if (a % T) ++l;
(ans += 1ll * (l + r) * (r - l + 1) % p * ni2 % p * f % p) %= p;
return;
}
dfs(tmp + 1, T, f);
int tt = T, ff = 1ll * f * (1 - P[tmp] + p) % p;
for (int i = 1; i <= c[tmp]; ++i) {
tt *= P[tmp];
dfs(tmp + 1, tt, ff);
}
}
int main() {
Euler_shai();
int T; scanf("%d", &T);
while (T--) {
scanf("%d%d", &a, &b);
pre(b);
ans = 0;
dfs(1, 1, 1);
printf("%lld\n", 1ll * b * ans % p);
}
return 0;
}
NOI 2017 Bless All
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
2016-04-26 【PKUSC 2015】的一道数学题
2016-04-26 【BZOJ 4518】【SDOI 2016 Round1 Day2 T3】征途
2016-04-26 【51NOD 1478】括号序列的最长合法子段
2016-04-26 【BZOJ 3527】【ZJOI 2014】力