数论
小囧子
成功注定是与饥寒相伴,与寂寞同行。
展开
-
扩展欧几里得算法
一:欧几里得算法(辗转相除法) 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。证明: a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r原创 2016-09-23 13:13:50 · 1089 阅读 · 0 评论 -
Floyd判圈算法
参考:http://blog.csdn.net/javasus/article/details/50015687Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm)。该算法由美国科学家罗伯特·弗洛伊德发明,是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起原创 2017-06-25 19:57:56 · 521 阅读 · 0 评论 -
poj 2800 Joseph’s Problem(数论)
题目大意:给定n和k,求 ∑1(k mod i)题目分析:n和k很大,直接算会TLE,但是可以先打表找规律。要以 sqrt(k) 为分界1) I从1~sqrt(k) 直接求用一重循环;2)i从 sqrt(k)~k 因为商相同的时候 他们的余数会成等差数列,所以只要枚举商从 sqrt(k)到1就行了;3)i从k~n就是(n-k)*k;自己推一下,反正就是前面商的差距很大,原创 2017-06-04 21:02:28 · 255 阅读 · 0 评论 -
poj 2407Relatives 欧拉函数
欧拉函数 φ函数的值 Euler函数 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 其中p1, p2……pn为x的所有质因数,x是不为0的整数 φ(1)=1(唯一和1互质的数就是1本身)【注意:每种质因数只一个。比如12=2*2*3】 定理: 若n是素数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^转载 2016-10-31 11:26:34 · 175 阅读 · 0 评论 -
高精度进制转换 poj 1220 NUMBER BASE CONVERSION
下面是输入一个r1进制的n,将其转化为r2进制的算法:令 n = n0 = n1*r2 + q0 n1 = n2*r2 + q1 . . . nk = qk其中 qi原创 2016-10-30 23:57:39 · 262 阅读 · 0 评论 -
poj 3191The Moronic Cowmpouter (负进位制)
思路:进位制也是可以有负的;例如负六进制下的123转换成十进制是1 * (-6) ^ 2 + 2 * (-6) ^1 + 3 * (-6) ^ 0 = 27. 那么如何将一个正进位制转化为负进位制数呢? 方法就是找到最小的非负整数x使得当前数减x能被 6 整除, 这个x 将作为新的最高位写到结果中, 然后当前数减去x再除以-6. 例如:将上面的例子反过来,将2原创 2016-10-30 23:50:26 · 295 阅读 · 0 评论 -
poj 3233 Matrix Power Series (矩阵快速幂)
这里介绍两种做法:一:思路:做这题时用的是类似二分的方法做,仔细观察可以发现Sk = A + A2 + A3 + … + Ak =(1+Ak/2)*(A + A2 + A3 + … + Ak/2 )+{Ak} =(1+Ak/2)*(Sk/2 )+{Ak}当k为偶数时不要大括号里面的数;代码://800ms#include#include#inc原创 2016-10-26 20:48:25 · 188 阅读 · 0 评论 -
poj 3735Training little cats (矩阵快速幂)
思路: 对于第一种操作g i,我们在单位矩阵基础上使Mat[0][i]变为1,例如g 1: 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1,显然[1 0 0 0]*Mat = [1 1 0 0] 对于第二种操作e i,我们在单位矩原创 2016-10-24 22:20:50 · 393 阅读 · 0 评论 -
POJ 3761 Bubble Sort (乘方取模)
思路:这题用到了组合数学中类似构造逆序数的思路。 对于每个排列a1,a2,-----,an,唯一对应一个反序列表b1,b2,------,bn;bj为位于aj的左边但大于aj的元素个数。例如,对于5,9,1,8,2,6,4,7,3,有反序表:0,0,2,1,3,2,2,4,2,6.令g(k)表示最大逆序对小于等于k的数列个数。 那么g(k)=k!∗(k+1)n−k //比如只有5原创 2016-10-24 22:15:52 · 272 阅读 · 0 评论 -
数论题 (牛客网)
[编程|1000分] 数码时间限制:1秒空间限制:32768K题目描述给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。输入描述:一行,两个整数 l 和 r (1 ≤ l ≤ r ≤ 10^9)。输出描述:输出9行。原创 2017-06-14 15:44:38 · 1401 阅读 · 0 评论