题解-ZeroJudge-c686 高斯符號
Problem
Solution
考慮到\(\lfloor \frac {km}n\rfloor\)等同於\(km\)整除\(n\),換種表示方法就是\(km\)減去\(km\)模\(n\)的餘數,再除以\(n\)
那麼原式等價於:
\[\sum_{k=1}^n\frac {km-(km \bmod n)}n\]
這時那根分數線代表的除法是沒有餘數的除法,不受到餘數的幹擾,所以我們將其提出來:
\[\frac {\sum_{k=1}^nkm-(km\bmod n)}n\]
我們再將sigma裏面的東西拆開,得到:
\[\frac {m\sum_{k=1}^nk}n-\frac {\sum_{k=1}^n(km\bmod n)}n\]
左邊的式子我們可以用等比數列求和公式求得\(\frac {m\sum_{k=1}^nk}n=\frac {m(n+1)}2\)
接下來我們考慮右邊的式子,由於求餘操作在求和的裏面,所以不能先求和再整體取餘(前者結果可能大於等於n,後者結果嚴格小於n)
但是我們發現\(k\)的上線是\(n\),正好是我們的模數,即當\(k=n\)時,\(km\bmod n=0\);再考慮到當\(k=0\)時,\(km\bmod n=0\);即\(km\bmod n\)的循環節一定是\(n\)的約數,再根據裴蜀定理,\(km\)在模\(n\)意義下關於\(k\)的循環節爲\(n\)和\(m\)的最大公約數,我們設爲\(d\)(即\(k\)加上\(d\)的倍數,相應的\(km\bmod n\)的值仍然相等)
在上面的條件下,我們發現\(km\bmod n\)的取值集合爲\(\{td|t\in [0,\frac nd)\}\),而且在一個循環節下集合內的每個數都會取到一次
考慮到循環節長度爲\(\frac nd\),而且\(d\)一定爲\(n\)的約數,所以\(k\)取\(1\)到\(n\),可以得到\(d\)個循環節
所以我們只要將一個循環節內的所有數加起來,乘以\(d\)即爲右邊式子的答案,集合內元素和用求和公式,爲\(\frac {(0+n-d)\frac nd}2\),再乘以循環節數量\(d\),除以原來就要除的\(n\),得到\(\frac {n-d}2\)
結合左邊和右邊的式子,最終答案爲\(\frac {m(n+1)}2-\frac {n-d}2=\frac {nm+m-n+d}2\)
式子都這麼短了,代碼就不貼了啦
题解-ZeroJudge-c686 高斯符號的更多相关文章
- MOSFET 符號解說
符號 上面這個是 空乏型 的 MOSFET 符號 (有做過修改), 一個是 P channel, 一個是 N channel, 空乏型本身就有通道,所以中間是沒有斷掉的直線, P 代表 + , 有外放 ...
- [面試題]C符號的優先順序
int x = 0; if (x = 0 || x == 0) printf("%dn", x); printf("%dn", x); 參考C的優先表, 其實就 ...
- HDU4870_Rating_双号从零单排_高斯消元求期望
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...
- js-字符串函数
js字符串函数 JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";v ...
- 【bzoj3601】一个人的数论 莫比乌斯反演+高斯消元
题目描述 题解 莫比乌斯反演+高斯消元 (前方高能:所有题目中给出的幂次d,公式里为了防止混淆,均使用了k代替) #include <cstdio> #include <cstrin ...
- 【bzoj2115】[Wc2011] Xor DFS树+高斯消元求线性基
题目描述 输入 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边. 图 ...
- 【bzoj4184】shallot 线段树+高斯消元动态维护线性基
题目描述 小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏. 每个时刻她会给小葱一颗小葱苗或者是从小葱手里拿走一颗小葱苗,并且 让小葱从自己手中的小 ...
- 同时在windows和linux环境开发时换行符的处理
Git 的 core.autocrlf 參數默认为true,即每次 checkin 時,Git 會將純文字類型的檔案中的所有 CRLF 字元轉換為 LF,也就是版本庫中的換行符號一律存成 LF:在 c ...
- Euler's totient function
https://en.wikipedia.org/wiki/Euler's_totient_function counts the positive integers up to a given in ...
随机推荐
- SecureCRT for ubuntu 菜单消失
两种解决方案. 1.先说网上查到的复杂的: 编辑CRT安装目录下的Global.ini 找到 D:"Show Menu Bar"=00000000 改成 D:"Show ...
- bzoj千题计划319:bzoj2865: 字符串识别(后缀自动机 + 线段树)
https://www.lydsy.com/JudgeOnline/problem.php?id=2865 同上一篇博客 就是卡卡空间,数组改成map #include<map> #inc ...
- 01-maya基础
maya基础 1,ctrl shift m 切换面板工具栏. 2,空格键+ 右键 :快速的切换视图. 3,在一视图上单击空格键,可放大显示. 4, 工程的创建 1,创建工程:文件--项目窗口,建完后, ...
- git个人学习总结
什么是git 代码管理工具,分布式管理,每个人电脑都是一个完整的版本库.并且有中央服务器(gitHub,gitLab)提供代码交换修改 git基础概念 工作区:自己的项目(有一个隐藏目录 " ...
- docker 系列 - 修改容器的 DNS 服务器
# 查看容器的 dns 解析设置文件, 也可以检查docker 运行环境 DNS docker run busybox:latest cat /etc/resolv.conf # 为容器 mybusy ...
- 几本不错的数据仓库和Hadoop书籍
<<Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案>>, Matt Casters等著,初建军翻译<<Hadoop应用架构>> ...
- 关闭Android ActionBar
修改Styles.xml中 <resources> <!-- Base application theme. --> <style name="AppTheme ...
- js中文编码到C#后台解码
escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编 ...
- MVC中的分部视图
背景: 项目的工期马上就要到了,由于后台封装的很好,我们只需要用心熟悉框架,接下来后台的工作就是简单的代码工作了.原本以为最困难的时期已经过去,可没想到前台才是最困难的. B/S的基础十分薄弱,加上B ...
- APPLE-SA-2019-3-25-7 Xcode 10.2
APPLE-SA-2019-3-25-7 Xcode 10.2 Xcode 10.2 is now available and addresses the following: KernelAvail ...