bzoj4173 数学
bzoj4173 数学
欧拉\(\varphi\)函数,变形还是很巧妙的
求:
\]
首先,对\(\sum\)下面那一坨进行变形
很容易知道,\(n\bmod k+m\bmod k=n-\lfloor\dfrac{n}{k}\rfloor\cdot k+m-\lfloor\dfrac{m}{k}\rfloor\cdot k<2k\)
那么对不等式同时除以\(k\),就是\(1\le \dfrac{n+m}{k}-\lfloor\dfrac{n}{k}\rfloor-\lfloor\dfrac{m}{k}\rfloor<2\)
然后把那个\(\frac{n+m}{k}\)来个下取整,这个式子就变成了\(1\),也就是:
\]
所以只看那个\(\sum\)就是:
\]
然后又由于\(\lfloor\dfrac{n+m}{k}\rfloor-\lfloor\dfrac{n}{k}\rfloor-\lfloor\dfrac{m}{k}\rfloor=1\)只有\(0,1\)两个值,是\(1\)符合要求是\(0\)不符合,所以可以把上式继续拆:
\]
\]
下面考虑如何求\(\sum_{i=1}^n\varphi(i)\lfloor\dfrac{n}{i}\rfloor\)就行了
想要推这个,先证明一个结论:\(n=\sum_{d\mid n}\varphi(d)\)
列举出如下分数:
\(\dfrac{1}{n},\dfrac{2}{n},\cdots,\dfrac{n}{n}\)
然后把他们化简
当且仅当\(d\mid n,\gcd(a,d)=1\),分数\(\frac{a}{d}\)出现在其中
那么,以\(d\)为分母的分数有\(\varphi(d)\)个,\(d\)可以取遍\(n\)的所有因数
又因为这些分数的个数是\(n\),所以\(n=\sum_{d\mid n}\varphi(d)\)
那么把\(\sum\)里面那一些,理解为\(\lfloor\frac{n}{i}\rfloor\)个\(\varphi(i)\)相加
而从\(1\)到\(n\)中,有\(\lfloor\frac{n}{i}\rfloor\)个数是\(i\)的倍数,所以我们枚举这\(n\)个数:
\]
然后用刚才说的结论,变形为:
\]
所以答案就清晰了:
\]
最后由于数很大一定要频繁取模
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define reg register
#define EN std::puts("")
#define LL long long
inline LL read(){
register LL x=0;register int y=1;
register char c=std::getchar();
while(c<'0'||c>'9'){if(c=='-') y=0;c=std::getchar();}
while(c>='0'&&c<='9'){x=x*10+(c^48);c=std::getchar();}
return y?x:-x;
}
#define mod 998244353
inline LL phi(LL x){
reg LL ret=x;
int sqrt=std::ceil(std::sqrt(x));
for(reg int i=2;i<=sqrt;i++){
if(!(x%i)) ret=ret/i*(i-1);
while(!(x%i)) x/=i;
}
if(x>1) ret=ret/x*(x-1);
return ret;
}
int main(){
LL n=read(),m=read();
std::printf("%lld",phi(n)%mod*(phi(m)%mod)%mod*(n%mod)%mod*(m%mod)%mod);
return 0;
}
bzoj4173 数学的更多相关文章
- 【BZOJ4173】数学 欧拉函数神题
[BZOJ4173]数学 Description Input 输入文件的第一行输入两个正整数 . Output 如题 Sample Input 5 6 Sample Output 240 HINT N ...
- 【BZOJ-4173】数学 欧拉函数 + 关于余数的变换
4173: 数学 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 306 Solved: 163[Submit][Status][Discuss] D ...
- 「BZOJ4173」数学
题面 已知 \[\large{S(n,m)=\{k_{1},k_{2},\cdots k_{i}\}}\] 且每个 \(k\) 满足 \[\large{n \%k+m\%k\geq k}\] 求 \[ ...
- 【BZOJ4173】数学 题解(数论)
前言:体验到了推式子的快感orz 题目大意:求$\varphi(n)*\varphi(m)*\sum_{n\ mod\ k+m\ mod\ k\geq k} \varphi(k)\ mod\ 9982 ...
- 数学思想:为何我们把 x²读作x平方
要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...
- 速算1/Sqrt(x)背后的数学原理
概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...
- MarkDown+LaTex 数学内容编辑样例收集
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
- 深度学习笔记——PCA原理与数学推倒详解
PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...
- Sql Server函数全解<二>数学函数
阅读目录 1.绝对值函数ABS(x)和返回圆周率的函数PI() 2.平方根函数SQRT(x) 3.获取随机函数的函数RAND()和RAND(x) 4.四舍五入函数ROUND(x,y) 5.符号函数SI ...
随机推荐
- 【Canvas】(1)---概述+简单示例
Canvas---概述+简单示例 如果通俗的去理解Canvas,我们可以去理解成它类似于我们电脑自带的画图工具一样,canvas首先是选择一块画布,然后在这个画布上描绘我们想画的东西,画好后展示给用户 ...
- 二、Python2.7的安装并与Python3.8共存
一:Python解释器为什么要2个版本? 众所周知,Python2.7是一个过渡版本. 很多公司写的项目并不是基于最新的Python3写的,在之后进行一些项目更改的时候,Python3的语法有一些并不 ...
- AJ学IOS(09)UI之UIScrollView代理触摸实现_图片缩放
AJ分享,必须精品 先看效果 代码 // // NYViewController.m // 05-放大缩小图片UIScrollView // // Created by apple on 15-3-2 ...
- 浅谈requests库
本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 安装 pip install requests # 是requests而不是request(有s的) re ...
- 三个步骤就能让你轻松掌握Python爬虫
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:NicePython PS:如有需要Python学习资料的小伙伴可以加 ...
- work of weekend 12/12/2015~12/14/2015
part 组员 周末工作+今日工作 工作耗时/h 明日计划 工作耗时/h backup 冯晓云 try the backup plan:brower:rewrite bi ...
- Problem L. World Cup
题目大意:有A,B,C,D四个队伍,两两之间有一个比赛,假如A和B比赛,如果平局,各加一分,如果说A胜,给A加3分,不给B加分,B胜同理 给出A,B,C,D,的得分,判断形成这种局面有多少种方式. 思 ...
- file_put_contens小trick
file_put_contents tricks 0x01 trick1 来自于P神的实例: <?php $text = $_GET['text']; if(preg_match('[<& ...
- Ubuntu16.04 安装eclipse
首先确保自己的Ubuntu已经安装了jdk并且配置好了环境变量 然后在官网下载相应的eclipse安装包: https://www.eclipse.org/downloads/packages/ 下载 ...
- 关于Sysinternals Suite
sysinternals 的网站创立于1996年由Mark russinovich和布赖科格斯韦尔主办其先进的系统工具和技术资料·微软于2006年7月收购sysinternals公司 . 不管你是一个 ...