全球百事通!DZY Loves Math
题面
对于正整数 \(n\),定义 \(f(n)\) 为 \(n\) 所含质因子的最大幂指数。例如 \(f(1960)=f(23×51×72)=3,f(10007)=1,f(1)=0\)。给定正整数 \(a,b\),求下式的值:
(资料图片)
题解
在下文的推导中,为避免歧义,设 \(N = \min(a,b), M = \max(a,b)\),显然 \(N \le M\)。
\[\displaystyle \begin{aligned} & \sum_{i = 1}^N \sum_{j = 1}^M f(\gcd(a,b))\\= & \sum_{d = 1}^N f(d) \sum_{i = 1}^N \sum_{j = 1}^M \left[\gcd(i,j) = d\right] \\= & \sum_{d = 1}^N f(d) \sum_{i = 1}^{\left\lfloor\frac{N}{d}\right\rfloor}\sum_{j = 1}^{\left\lfloor\frac{M}{d}\right\rfloor} \left[\gcd(i,j) = 1\right] \\ = & \sum_{d = 1}^N f(d) \sum_{i = 1}^{\left\lfloor\frac{N}{d}\right\rfloor}\sum_{j = 1}^{\left\lfloor\frac{M}{d}\right\rfloor} \varepsilon(\gcd(i,j)) \\= & \sum_{d = 1}^N f(d) \sum_{i = 1}^{\left\lfloor\frac{N}{d}\right\rfloor}\sum_{j = 1}^{\left\lfloor\frac{M}{d}\right\rfloor} \sum _{t \mid \gcd(i, j)} \mu(t)\\= & \sum_{d = 1}^N f(d) \sum_{i = 1}^{\left\lfloor\frac{N}{d}\right\rfloor}\sum_{j = 1}^{\left\lfloor\frac{M}{d}\right\rfloor} \sum _{t \mid i \land t \mid j} \mu(t)\\\end{aligned}\]设 \(T = dt\),那么:
\[\displaystyle \begin{aligned} & \sum_{d = 1}^N f(d) \sum_{i = 1}^{\left\lfloor\frac{N}{d}\right\rfloor}\sum_{j = 1}^{\left\lfloor\frac{M}{d}\right\rfloor} \sum _{t \mid i \land t \mid j} \mu(t)\\= & \sum_{T = 1}^N {\left\lfloor\frac{N}{T}\right\rfloor} {\left\lfloor\frac{M}{T}\right\rfloor} \sum_{d \mid T} f(d) \mu(\frac{T}{d})\end{aligned}\]设 \(h = f * \mu\),那么原式可化为:
\[\displaystyle \sum_{T = 1}^N {\left\lfloor\frac{N}{T}\right\rfloor} {\left\lfloor\frac{M}{T}\right\rfloor} h(T)\]下面考虑求函数 \(h(n)\) 的值,首先对 \(n\) 进行质因数分解:
\[\displaystyle n = \prod_{i = 1}^m p_i^{c_i} \ ( \ p_i \in \mathbb{P}, c_i \ge 1 \ )\]发现可以把 \(h(n)\) 写成如下形式:
\[\displaystyle h(n) = \sum_{ab = n} f(a) \mu(b)\]考虑到莫比乌斯函数 \(\mu(n)\) 的性质:如果 \(n\) 中含有平方质因子那么 \(\mu(n) = 0\)。所以可以得出能产生贡献的 \(b\) 即满足 \(\mu(b) \ne 0\) 的 \(b\) 一定满足:
\[\displaystyle b = \prod_{i = 1}^m p_i^{d_i} \ ( \ p_i \in \mathbb{P}, _i \in \{0, 1\} \ )\]所以可以得出 \(f(a) = l \lor f(a) - l - 1\)。
设 $l = \max \limits_{i = 1}^m c_i,k = \sum \limits_{i = 1}^m \left[ c_i = l\right] $。接下来按 \(k \ne m\) 和 \(k = m\) 两种情况分类讨论 \(h(n) 的值\)。
当 \(k \ne m\) 时,按 \(f(a) = l\) 和 \(f(a) = l - 1\) 两种子情况讨论。
当 \(f(a) = l\) 时,设在 \(k\) 个满足 \(c_i = l\) 的质数中选了 \(t\) 个,在另外 \(m - k\) 个质数中选了 \(s\) 个,那么可以得出贡献为:
\[\displaystyle \begin{aligned} & \sum_{s = 0} ^ {m - k} \sum_{t = 0}^{k - 1} \dbinom{k}{t} \times l \times (-1) ^ {s + t} \times \dbinom{m - k}{s}\\= & \sum_{t = 0}^{k - 1} \dbinom{k}{t} \times l \times (-1) ^ {t} \sum_{s = 0} ^ {m - k} (-1) ^ {s} \times 1^{m - k - s} \dbinom{m - k}{s} \\= & 0\end{aligned}\]当 \(f(a) = l - 1\) 时,\(k\) 个满足 \(c_i = l\) 的质数中一定全部选上,设在另外 \(m - k\) 个质数中选了 \(s\) 个,那么可以得出贡献为:
\[\displaystyle \begin{aligned} & \sum_{s = 0} ^ {m - k} (l - 1) \times (-1) ^ {s} \times \dbinom{m - k}{s}\\= & \sum_{s = 0} ^ {m - k} (l - 1) \times (-1) ^ {s}\times 1^{m - k - s} \dbinom{m - k}{s} \\= & (l - 1) \times \sum_{s = 0} ^ {m - k} (-1) ^ {s}\times 1^{m - k - s} \dbinom{m - k}{s}\\= & 0\end{aligned}\]当 \(k = m\) 时,有 \(f(a) = l\) 和 \(f(a) = l - 1\) 两种子情况,可以得出贡献为:
\[\displaystyle \begin{aligned} & \sum_{s = 0} ^ {m - 1} (l) \times (-1) ^ {s} \times \dbinom{m - k}{s} + (l - 1) \times (-1) ^ {m} \times \dbinom{m - k}{m - k}\\= & \sum_{s = 0} ^ {m} (l) \times (-1) ^ {s} \times \dbinom{m - k}{s} - 1 \times (-1) ^ m\\= & - 1 \times (-1) ^ m \\= & (-1) ^ {m + 1}\end{aligned}\]综上可以得出 \(h(n)\) 的计算式:
\[h(n)=\begin{cases} 0 & k \ne m\\(-1)^{m + 1} & k = m\end{cases}\]下面考虑如何高效的预处理出 \(h(n)\) 的值。
考虑一下欧拉筛在筛出合数 \(\displaystyle n = \prod_{i = 1}^m p_i^{c_i} \ ( \ p_i \in \mathbb{P}, c_i \ge 1 , p_i < p_{i + 1})\) 时的路径:
\[p_m \rightarrow p_m^2 \rightarrow p_m^3 \rightarrow \cdots \rightarrow p_m^{c_m} \rightarrow \\p_{m - 1} p_m^{c_m} \rightarrow p_{m - 1}^2 p_m^{c_m} \rightarrow \cdots n\]也就是说一个合数被筛出的路径是按质因子从大到小的顺序筛出的,所以可以开三个数组 \(preCount,nowCount\) 和 \(factorCount\),分别记录当前数的最小质因子的幂次,其他所有质因子的幂次和本质不同的质因子的个数。
如果在筛的过程中,设 \(i\) 为当前筛的数, \(j\) 为枚举的质数,\(t = i \cdot j\),如果 \(j \nmid i\),也就是说 \(j\) 不是 \(i\) 的质因子,但是其是 \(t\) 的最小质因子,所以 \(nowCount[t] = 1\),但是 \(preCount[t]\) 的值要根据 \(nowCount[i]\) 和 \(preCount[i]\) 的值来考虑:如果两者相等,直接赋值即可;否则直接赋 \(-1\),也就是说现在这个欧拉筛上的路径上的数的质因子幂次不可能相等了。如果 \(j \mid i\),直接累加即可。
Code
#include typedef long long valueType;constexpr valueType maxN = 1e7 + 5;class LineSieve {public: typedef long long valueType; typedef std::vector container;private: valueType size; container minFactorList; container primeList; container preCount, nowCount, factorCount, data, sum;public: explicit LineSieve(valueType _size_) : size(_size_), minFactorList(_size_ + 1), preCount(_size_ + 1, 0),nowCount(_size_ + 1, 0), factorCount(_size_ + 1), data(_size_ + 1),sum(_size_ + 1) { primeList.reserve((size_t) std::floor(std::log((long double) (_size_ + 1)))); for (valueType i = 2; i <= size; ++i) { if (minFactorList[i] == 0) { primeList.push_back(i); minFactorList[i] = i; nowCount[i] = 1; preCount[i] = 0; factorCount[i] = 1; data[i] = 1; } for (auto const &iter: primeList) { valueType const t = i * iter; if (t > size) break; minFactorList[t] = iter; if (i % iter == 0) { nowCount[t] = nowCount[i] + 1; preCount[t] = preCount[i]; factorCount[t] = factorCount[i]; break; } else { nowCount[t] = 1; preCount[t] = (nowCount[i] == preCount[i] || preCount[i] == 0) ? nowCount[i] : -1; factorCount[t] = factorCount[i] + 1; } } } for (int i = 2; i <= size; ++i) if (nowCount[i] == preCount[i] || preCount[i] == 0) data[i] = (factorCount[i] & 1) == 1 ? 1 : -1; else data[i] = 0; std::partial_sum(data.begin(), data.end(), sum.begin()); } valueType ans(valueType x) const { if (x > size) throw std::range_error("Larger than Size."); if (x < 0) throw std::range_error("Too small."); return sum[x]; }};int main() { valueType T; std::cin >> T; LineSieve Euler(maxN); typedef std::function solveFunction; solveFunction solve = [&Euler](valueType N, valueType M) -> valueType { if (N > M) std::swap(N, M); valueType result = 0; valueType l = 1, r; while (l <= N) { r = std::min(N / (N / l), M / (M / l)); result += (Euler.ans(r) - Euler.ans(l - 1)) * (N / l) * (M / l); l = r + 1; } return result; }; for (int i = 1; i <= T; ++i) { valueType N, M; std::cin >> N >> M; std::cout << solve(N, M) << "\n"; } std::cout << std::flush; return 0;}
图片
-
全球百事通!DZY Loves Math
全球新动态:安全生产许可证
天天微资讯!英雄联盟季中赛
-
北京西站属于哪个区几环_北
每日速递:豪华超埃尔法!2.
全球热资讯!民法典知识177
宋洋|每日头条
qq发消息为什么对方收不到_
环球新动态:家族荣耀电视剧
-
【世界快播报】微信回了个“
长三角铁路今日迎返程客流高
内蒙古推动国家重要农畜产品
今日播报!夏收开镰 比高温
残响死灭(关于残响死灭介绍
世界即时看!轩辕剑龙舞云天
-
美联储戴利:今年再加息两次
封己守残_关于封己守残介绍
小米sim卡密码怎么设置(sim
人平均每天喝多少水健康_人
最后通牒和最后通牒(最后通
飞狐商旅网订单怎么查_飞狐
精彩推送
- 全球百事通!DZY Loves Math
- 消息突破5!!::内战的扳机是由(普京)扣动的。_世界简讯
- 山西加快焦化行业调整升级,年内将全面关停4.3米焦炉 当前独家
- 全球新动态:安全生产许可证办理流程 安全生产许可证办理
- 八月十五云遮月的原诗_八月十五云遮月|环球热点评
- 2023年端午档全国电影市场总票房破8亿元 进入中国影史端午档票房前三 环球通讯
- 天天微资讯!英雄联盟季中赛冠军_英雄联盟季中赛
- 湖北省高等教育学会民办教育专委会2023年年会举行
- 成都发布高温蓝色预警_每日视点
- 环球时讯:三签约达成:拜仁白菜价签约格雷罗,切尔西签下杰克逊,皇马与塞瓦略斯续约
- 北京西站属于哪个区几环_北京西站属于哪个区
- 南京大屠杀幸存者高恒发去世 在世在册幸存者仅剩39位 焦点短讯
- 每日速递:豪华超埃尔法!2.0T+隔音玻璃+3米轴距,跌至16万的MPV
- 【全球热闻】流动性估值跟踪:基金最新偏离度情况
- 马家大院,一个中医如何挣得这么大的家业,据说有三太太的功劳 环球速读
- 全球热资讯!民法典知识177——合同成立地点的确定
- 当前最新:连破纪录!北京现史上首次40℃“三连击”
- 让传统节日绽放时代新韵(今日谈)
- 宋洋|每日头条
- 全球信息:贵州镇远:龙舟竞技“闹”古城
- 哀悼!南京大屠杀幸存者高恒发去世
- qq发消息为什么对方收不到_为什么qq发消息别人收不到
- 今日热闻!年金类保险产品有哪些类型?靠谱吗?
- 手机扬声器进水应该怎么处理|聚看点
- 环球新动态:家族荣耀电视剧全部角色介绍 老戏骨飙戏够过瘾
- 【速看料】过热器为什么要多级布置管道_过热器为什么要多级布置
- 价格周报|端午节后猪价回落,未来一周终端市场或再度进入疲软状态
- 【世界快播报】微信回了个“OK”,江西一男子成了被告……
- 在农村被老板拖欠工资要怎样办
- 安康节!持艾簪蒲佩香囊 端午沐兰祈安康
- 长三角铁路今日迎返程客流高峰,预计发送旅客302万人次|环球今日讯
- 微信回了个“OK”表情男子成被告,表情符号成“呈堂证供”日益增多,法院提醒来了! 全球新要闻
- 普益财富美股跌9.73%
- 环球新消息丨西安文明旅游志愿服务系列活动启动
- 【当前独家】金山云美股跌14.13%
- 内蒙古推动国家重要农畜产品生产基地建设28项重点任务落地见效|天天热资讯
- 新资讯:金融壹账通美股跌14.76%
- 如何做好基于大数据的学生心理健康监测-环球报道
- 优品车美股涨8.32%
- 金生游乐美股涨10.4%
- 世界最新:含辛茹苦的辛指五味中的哪一位_含辛茹苦
- 今日播报!夏收开镰 比高温还火热
- 鲤城区第三中心小学禁毒志愿服务队_关于鲤城区第三中心小学禁毒志愿服务队简述 今日热议
- 2023年5月全国生产粗钢9012.0万吨、同比下降7.30%
- 消费支出重新成为经济增长第一拉动力 环球要闻
- 扩大豆,中国持续提升自给率|环球新要闻
- 全球速读:今夏我国电煤供需预期整体平衡
- 1-5月中国未锻轧铝及铝材出口231.50万 同比下降20.2%_世界微动态
- 残响死灭(关于残响死灭介绍)|天天快消息
- 恒指牛熊街货比(56:44)︱6月24日
- 第28届上海电视节白玉兰奖揭晓!《人世间》《县委大院》问鼎最佳中国电视剧奖_世界热点
- 世界消息!深圳GDP增长5%:以经济为中心的发展
- 世界即时看!轩辕剑龙舞云天山下载_轩辕剑龙舞云山电脑版
- 今日最新!Truist Securities:重申Marqeta(MQ.US)评级
- 【环球热闻】人很瘦,下腹却有赘肉,有什么办法减下来?
- 韩国200多艘渔船海上集结 抗议日本决定将福岛核污染水排海
- 美联储戴利:今年再加息两次是非常合理的预测-全球看热讯
- 徐悲鸿的故事_徐悲鸿的小故事|热门看点
- 每日速递:激流中一对夫妻被困,衢州消防紧急救援
- 封己守残_关于封己守残介绍
- 环球热资讯!端午档次日票房超过首日,《消失的她》票房达3.7亿
- 日行一善名言警句20字_日行一善名言警句|环球报道
- 小米sim卡密码怎么设置(sim卡密码怎么设置) 天天微资讯
- 天天热点!南宁VS柳州:南宁依然是当之无愧的第一选择吗?
- 张嘉倪四公时外婆离世_错过追悼会下台崩溃大哭
- 人平均每天喝多少水健康_人平均每天喝多少水
- 观焦点:中国教育电视台融媒体直播节目《直通高招》今晚9点开播!
- 北京社保记录查询怎么查,上哪查社保信息
- 最后通牒和最后通牒(最后通牒)-环球新要闻
- 世界热消息:专访《消失的她》导演:人物是悬疑的核心
- 当前动态:《庆余年》导演回应阵容调整 原班人马?
- 飞狐商旅网订单怎么查_飞狐商旅网-热资讯
- 太可惜!国乒名将浪费8个局点崩盘,不久前才夺1冠,如今止步16强
- 环球快播:关注民生实事 深化履职成效
- 天天速读:fast路由器账号密码忘了(fast路由器账号密码)
- JDG被官方故意刁难,用实力打脸对方,夏季赛危机已经解除-环球微头条
- 《最终幻想16》奥利哈康怎么获得?奥利哈康位置分享-全球热推荐
- 厦门市退休工资计算公式2023计算器 厦门市退休工资多少钱一个月?-天天观察
- 惊险!海南澄迈一男孩在海边溺水昏迷不醒,危急时刻……
- 儿的拼音是整体认读音节吗_儿的拼音
- 全球即时看!戒毒故事|少年错把吸毒当“时尚” 沉浮毒海20年后重生化身志愿者
- 水杯遭同事投毒?女子被诊出胃部和肝部……
- 辽宁营口一钢铁厂发生烫伤事故,造成4人死亡5人受伤
- “从小到大第一次干这种事!”
- 今热点:海康威视摄像头恢复出厂设置状态_海康威视摄像头恢复出厂设置
- 每日播报!灯火璀璨 人流如织!德州庆云祥云古镇不夜城启幕 激发夜间消费新活力
- 夷陵之战,蜀国由鼎盛转入衰败
- 精选!放疗一个疗程多少钱大概_放疗一个疗程多少钱
- 清风徐徐:读《岁月不是歌》有感
- sitop电源(SINTOP)
- 肚子里有胀气一直放屁(肚子里有胀气总放屁)
- 端午假期安全生产不“打烊” 环球微速讯
- 贾乃亮携女儿买手表,10岁甜馨剪短发还挑染,身高暴涨筷子腿吸睛
- 幻想神域剑盾加点攻略_幻想神域剑盾
- 汨罗江上赛龙舟_当前热门
- 司马昭之心路人皆知后面一句_司马昭之心路人皆知 环球新消息
- 天天热推荐:青岛移动宽带套餐资费一览表2020(青岛移动宽带套餐)
- TCL:敢为上游不畏难
- 羽飞长空!廊坊临空国际会展中心正式启用|微资讯
- 环球动态:转向柱存在安全隐患 19辆进口大切诺基4xe被召回