前言:体验到了推式子的快感orz

题目大意:求$\varphi(n)*\varphi(m)*\sum_{n\ mod\ k+m\ mod\ k\geq k} \varphi(k)\ mod\ 998244353$

---------------------------

设$n=q_1k+r_1,m=q_2k+r_2$,那么$q_1=\lfloor \frac{n}{k} \rfloor,q_2=\lfloor \frac{m}{k} \rfloor$。

$n+m=(q_1+q_2)k+r_1+r_2$

$(n+m)-(q_1+q_2)k=r_1+r_2$

$\lfloor \frac{n+m}{k} \rfloor-\lfloor \frac{n}{k} \rfloor-\lfloor \frac{m}{k} \rfloor=r_1+r_2=1$

所以现在变为:找到满足上式的$k$。

我们先给出一个式子:

$ans=\sum\limits_{i=1}^{n+m}\varphi(k)*\lfloor \frac{n+m}{k} \rfloor-\sum\limits_{i=1}^n \varphi(k)*\lfloor \frac{n}{k} \rfloor-\sum\limits_{i=1}^m \varphi(k)*\lfloor \frac{m}{k} \rfloor$

这个式子是什么意思?

对于$(\lfloor \frac{n+m}{k} \rfloor-\lfloor \frac{n}{k} \rfloor-\lfloor \frac{m}{k} \rfloor)*\varphi(k)$:

如果$k$满足条件,那么系数为$1$,对答案有贡献。如果$k$不合法那么系数为$0$,对答案是没有贡献的。所以上面给出的式子可以计算所有合法的答案。

现在我们尝试对$\sum\limits_{i=1}^n \varphi(k)*\lfloor \frac{n}{k} \rfloor$进行化简。

有这样一个关系:$\sum\limits_{i=1}^n i=\sum\limits_{i=1}^n \sum\limits_{k|i}\varphi(k)=\sum\limits_{i=1}^n \varphi(k)*\lfloor \frac{n}{k} \rfloor$

证明:$\sum\limits_{i=1}^n i=\sum\limits_{i=1}^n \sum\limits_{k|i}\varphi(k)$

对于一个数$i$,在小于等于它的数中有这样的关系:

1.最大公约数为$1$,记为$G_1$,个数显然是$\varphi(i)$

2.最大公约数为$2$,记为$G_2$,个数是$\varphi(i/2)$

$\cdots$

i.最大公约数为$i$,记为$G_i$,个数为$1$。

这些集合的并集大小为$i$,所以上述等式成立。

现在来看$\sum\limits_{i=1}^n \sum\limits_{k|i}\varphi(k)=\sum\limits_{i=1}^n \varphi(k)*\lfloor \frac{n}{k} \rfloor$

对于左式,其意义为考虑每个$i$对答案的贡献;而对于右式,其意义为考虑每个合法的$k$对答案的贡献。二者对于答案的总贡献是相同的,所以等式成立。

经过化简,最终答案为$\varphi(n)*\varphi(m)*n*m$

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=;
int n,m,ans;
inline int phi(int x)
{
int res=x,m=x;
for (int i=;i*i<=m;i++)
{
if (x%i) continue;
res=res/i*(i-);
while(!(x%i)) x/=i;
}
if (x>) res=res/x*(x-);
return res%mod;
}
signed main()
{
cin>>n>>m;
ans=((n%mod)*(m%mod))%mod;
ans*=phi(n),ans%=mod;
ans*=phi(m),ans%=mod;
printf("%lld",(ans+mod)%mod);
return ;
}

【BZOJ4173】数学 题解(数论)的更多相关文章

  1. TYUT程序设计入门第四讲练习题题解--数论入门

    程序设计入门第四讲练习题题解--数论入门 对于新知识点的学习,需要不断地刷题训练,才能有所收获,才能更好地消化知识点. 题组链接: 程序设计入门第四讲练习题--数论 by vjudge 题解: A. ...

  2. bzoj4173 数学

    bzoj4173 数学 欧拉\(\varphi\)函数,变形还是很巧妙的 求: \[\varphi(n)\cdot\varphi(m)\cdot\sum_{n\bmod k+m\bmod k\ge k ...

  3. HDU 1030 Delta-wave 数学题解

    给出一个数字塔,然后求沿着数字之间的边走,给出两个数字,问其路径最短的长度是多少. 看似一条搜索题目,只是有一定做题经验的人都知道,这个不是搜索题,直接搜索肯定超时. 这个是依据规律计算的数学题目. ...

  4. QBXT Day 4 数学,数论

    今天讲一讲数论吧(虽然清明讲过了) 进制转换 我们来看10这个数怎么转换成k进制 因为10=2^3+2^1,所以10就是1010 三进制也同理10=3^2+3^0,所以就是101 我们对于一个10进制 ...

  5. codeforces 446C DZY Loves Fibonacci Numbers(数学 or 数论+线段树)(两种方法)

    In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation F1 ...

  6. interesting Integers(数学暴力||数论扩展欧几里得)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwwAAAHwCAIAAACE0n9nAAAgAElEQVR4nOydfUBT1f/Hbw9202m0r8

  7. 【BZOJ2742】【HEOI2012】Akai的数学作业 [数论]

    Akai的数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 这里是广袤无垠的宇宙这里 ...

  8. POJ 3252 Round Numbers 数学题解

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  9. Light OJ 1005 - Rooks 数学题解

    版权声明:本文作者靖心.靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

随机推荐

  1. SimpleImputer 中fit和transform方法的简介

    sklearn.impute.SimpleImputer 中fit和transform方法的简介 SimpleImputer 简介 通过SimpleImputer ,可以将现实数据中缺失的值通过同一列 ...

  2. js代码段

    1.数组去重 Array.prototype.DuplicateRemoval = function(){ let res = [this[0]]; for(let i = 1; i < thi ...

  3. java 数据结构(十一):Map接口

    双列集合框架:Map1.常用实现类结构 |----Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x) * |----HashMap:作为Map的主要实现类:线程 ...

  4. 数据可视化之DAX篇(十七)Power BI表格总计行错误的终极解决方案

    https://zhuanlan.zhihu.com/p/68183990 我在知识星球收到的问题中,关于表格和矩阵(以下统称表格)总计行错误算是常见的问题之一了,不少初学者甚为不解,在Excel透视 ...

  5. 数据可视化之分析篇(七)Power BI数据分析应用:水平分析法

    https://zhuanlan.zhihu.com/p/103264851 首先,以财务报表分析为例,介绍通用的分析方法论,整体架构如下图所示: (点击查看大图) 接下来我会围绕这五种不同的方法论, ...

  6. 图解:有向环、拓扑排序与Kosaraju算法

    图算法第三篇 图解:有向环.拓扑排序与Kosaraju算法 首先来看一下今天的内容大纲,内容非常多,主要是对算法思路与来源的讲解,图文并茂,希望对你有帮助~ 1.有向图的概念和表示 概念 有向图与上一 ...

  7. 痞子衡嵌入式:SNVS Master Key仅在i.MXRT10xx Hab关闭时才能用于DCP加解密

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列中数据协处理器DCP使用SNVS Master Key加解密的注意事项. i.MXRT不仅仅是处理性能超强的MCU,也是 ...

  8. Ubuntu安装Redis过程完整笔记

    在阿里云与百度云均已经安装成功~~ 下载文件 切换路径设置下载存放地址 cd /home 下载安装包(http://download.redis.io/releases建议下载最新稳定版本) sudo ...

  9. 推荐收藏:100道Linux笔试题,能拿90分以上的都去了BAT

    本套笔试题共100题,每题1分,共100分.(参考答案在文章末尾) 1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和 ...

  10. 为什么在SpringBoot+maven的项目中,所引入的依赖包可以不指定依赖的版本号?

    当在Springboot项目中引入了spring-boot-starter-parent,则可以不用引入依赖包版本号,比如: <parent> <groupId>org.spr ...