【BZOJ4173】数学 题解(数论)
前言:体验到了推式子的快感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】数学 题解(数论)的更多相关文章
- TYUT程序设计入门第四讲练习题题解--数论入门
程序设计入门第四讲练习题题解--数论入门 对于新知识点的学习,需要不断地刷题训练,才能有所收获,才能更好地消化知识点. 题组链接: 程序设计入门第四讲练习题--数论 by vjudge 题解: A. ...
- bzoj4173 数学
bzoj4173 数学 欧拉\(\varphi\)函数,变形还是很巧妙的 求: \[\varphi(n)\cdot\varphi(m)\cdot\sum_{n\bmod k+m\bmod k\ge k ...
- HDU 1030 Delta-wave 数学题解
给出一个数字塔,然后求沿着数字之间的边走,给出两个数字,问其路径最短的长度是多少. 看似一条搜索题目,只是有一定做题经验的人都知道,这个不是搜索题,直接搜索肯定超时. 这个是依据规律计算的数学题目. ...
- QBXT Day 4 数学,数论
今天讲一讲数论吧(虽然清明讲过了) 进制转换 我们来看10这个数怎么转换成k进制 因为10=2^3+2^1,所以10就是1010 三进制也同理10=3^2+3^0,所以就是101 我们对于一个10进制 ...
- codeforces 446C DZY Loves Fibonacci Numbers(数学 or 数论+线段树)(两种方法)
In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation F1 ...
- interesting Integers(数学暴力||数论扩展欧几里得)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwwAAAHwCAIAAACE0n9nAAAgAElEQVR4nOydfUBT1f/Hbw9202m0r8
- 【BZOJ2742】【HEOI2012】Akai的数学作业 [数论]
Akai的数学作业 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 这里是广袤无垠的宇宙这里 ...
- POJ 3252 Round Numbers 数学题解
Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...
- Light OJ 1005 - Rooks 数学题解
版权声明:本文作者靖心.靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
随机推荐
- 管理用户和组 、 tar备份与恢复 、 cron计划任务-云计算学习(4)
配置用户和组账号 问题 本例要求创建下列用户.组以及组的成员关系: 新建用户 alex,其用户ID为3456,密码是flectrag 创建一个名为 adminuser 的组 创建一个名为 natash ...
- 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...
- Java常用API(ArrayList类)
Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...
- DelayQueue源码分析
DelayQueue<E>继承于AbstractQueue<E>实现BlockingQueue<E> 内部变量包括ReentrantLock 类型的lock以及条件 ...
- GPO - Folder Mapping via GPO
Create a Group Policy on AD DC Server. The GPO policy will come into effect on the next login, or us ...
- p41_数据报与虚电路
一.定义 数据报方式为网络层提供无连接服务. 无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同. 虚电路方式为网络层提供连接服务 连接服务:首先为分组的传 ...
- swagger -- 前后端分离的API接口
文章目录 一.背景 二.swagger介绍 三.在maven+springboot项目中使用swagger 四.swagger在项目中的好处 五.美化界面 参考链接:5分钟学会swagger配置 参考 ...
- 47 张图带你 MySQL 进阶!!!
我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在局部以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...
- 从LocalDateTime序列化探讨全局一致性序列化
日拱一卒无有尽,功不唐捐终入海. 楔子 前两周发了三篇SpringSecurity和一篇征文,这周打算写点简单有用易上手的文章,换换脑子,休息一下. 今天要写的是这篇:从LocalDateTime序列 ...
- 一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起
上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本 ...