数学------------------
文章平均质量分 65
Spylft
这个作者很懒,什么都没留下…
展开
-
Miller Rabin
正常的素数判定,要么是直接枚举因子,通过根号n的复杂度来完成,这样时间可能不够,又或是先通过打表之后,去查表,可是这样空间复杂度过大.所以说,对于小于1e18的数,这些方法是毫无作用的.那么怎么来判断小于1e18的数是否为素数呢?这里就要用到即将介绍的Miller Rabin素数判定法.这个算法的核心是费马小定理,费马小定理的内容是:if p is a prime then x^(p-1)原创 2016-10-02 15:07:11 · 607 阅读 · 0 评论 -
[BZOJ2154] Crash的数字表格
[BZOJ2154] Crash的数字表格题目的意思就是求出∑ni=1∑mj=1lcm(i,j)\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j).我们可以把问题进行转换,有: ∑i=1n∑j=1mlcm(i,j)=∑i=1n∑j=1mi∗jgcd(i,j)\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)=\sum_{i=1}^{n}\sum_{j=1原创 2016-10-20 18:12:00 · 434 阅读 · 0 评论 -
莫比乌斯反演
莫比乌斯反演最近学了一下莫比乌斯反演(实际只学了2天,旁边cchyh还一直吵吵吵),所以还是来写写现在能写出来的东西吧.莫比乌斯反演,指的是对于一个数论函数F(n)F(n),有 F(n)=∑d|nf(d)F(n)=\sum_{d|n}{f(d)}这里f(d)f(d)是另一个数论函数,那么就会有 f(n)=∑d|nμ(d)F(nd)f(n)=\sum_{d|n}{\mu(d)F(\frac{n}{原创 2016-10-20 16:30:42 · 614 阅读 · 0 评论 -
Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)
因为自己太水了所以写不出多少题目,昨天只写了3道,至少没掉分嘛对吧.(明明是第4题题目看了好久才看懂……) C Ray Tracing Task: 一个n*m的矩阵中有k个点,你现在有一道从(0,0)向外发射的光线,它能够沿y=x这条直线射,其反射遵从光的反射定律,每秒钟它能够经过2√\sqrt{2}的距离,现在请问每个点被经过的最小时间,若不会被光线经过,则输出-1. S原创 2016-10-09 16:52:53 · 447 阅读 · 0 评论 -
约瑟夫问题
约瑟夫问题大意:有N个人站成一圈,从第一个人开始报数,从1开始报,若报到M的倍数的人,就必须离开游戏.问最后剩下的胜利的人是谁. 首先我们可以很快想到去模拟游戏的过程,并打出如下代码:#include<cstdio>bool mark[30005];int main(){ int n,m; scanf("%d %d",&n,&m); int now=1,last=1,原创 2016-09-06 16:55:18 · 519 阅读 · 0 评论 -
SRM 510 Div1 1000 TheLuckyBasesDivOne
Task:给你一个数N,把N在B进制中的转化存进一个数组S,若能满足S[0]∗B0+S[1]∗B1+S[2]∗B2+...+S[t]∗Bt==NS[0]*B^0+S[1]*B^1+S[2]*B^2+...+S[t]*B^t==N并且S[i]在十进制中的每一个数字为4,要么为7,对于这样的一个B,我们称它为N的Lucky数,求N的Lucky数有多少个,若有无限个,则输出-1.(1<=N<=1e16)S原创 2016-09-13 16:38:52 · 442 阅读 · 0 评论 -
SRM 510 DIV2 1000 TheLuckyBasesDivTwo
Task:给你一个数N,把N在B进制中的转化存进一个数组S,若能满足S[0]∗B0+S[1]∗B1+S[2]∗B2+...+S[t]∗Bt==NS[0]*B^0+S[1]*B^1+S[2]*B^2+...+S[t]*B^t==N并且S[i]要么为4,要么为7,对于这样的一个B,我们称它为N的Lucky数,求N的Lucky数有多少个,若有无限个,则输出-1.(1<=N<=1e12)Solution:首原创 2016-09-13 16:35:03 · 345 阅读 · 0 评论 -
SRM 542 DIV2 950 StrangeDictionary
Task:给你若干个字符串,然后给它们进行排序,但排序依照的位数是一个随机生成的排列(就是你可能对两个长度为三的字符串,先将它们的第2位进行比较,再比较第1位,再比较第3位才能得到它们的大小关系),那么求出每个字符串的期望排序后的位置,(n<=50)Solution:对于两个字符串,我们数出第一个中比第二个大的字符有k1个,第二个中比第一个大的有k2个.那么我们就可以将ans[i]+=1.0∗k1/原创 2016-09-13 16:32:25 · 358 阅读 · 0 评论 -
Poi2010 Divine Divisor
Solution:首先我们想到吧所有的数质因子分解,所得到的每个质因子的个数的和的最大值就是要求的k,而我们设这个最大值出现的次数为m,则我们可以知道,任意个这样的质因子的乘积都是可行的一种解,所以第二个答案就是2^m,注意到这个值可能会很大,所以我们要用高精乘法.那么我们再观察一下现在这个数的范围->[1,1e18],根本无法去进行完全的因数分解,但是我们可以知道,如果这个范围内的数有三个或以上的原创 2016-10-02 15:04:37 · 600 阅读 · 0 评论