数论
yueqiq
这个作者很懒,什么都没留下…
展开
-
有关除数的一些性质
1.如何马上回答60有多少个除数? 首先把已知数分解成“基本构件”或者说其质因子乘幂的连乘积,而分解法时唯一的。例如24=2^3*3, 60=2^2*3*5,接着,再把每个质因子的乘幂加上1,并连乘起来。例如,在数24的质因子乘积中,2与3的 乘幂分别为3与1,从而就有4*2=8个除数,而对60来说,则有3*2*2=12个除数。 即N=p1^a1*p2^a2...pn^an,则N的转载 2012-05-27 13:39:07 · 1089 阅读 · 0 评论 -
hdu3364 Lanterns
典型的高斯消元解开关灯问题。code:#include#include#includeusing namespace std;bool ctr[55][55],fuc[55][55];int equ,var;__int64 Guass(){ int row=0,col=0; for( int i,j; row<equ && col<var; row++,c原创 2012-11-05 12:35:33 · 683 阅读 · 0 评论 -
高斯消元
突然发现,学了线性代数,高斯似乎很简单。郁闷。高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。以上是线性代数课的回顾,下面来说说高斯消元法在编程中的转载 2012-05-27 13:50:09 · 1296 阅读 · 0 评论 -
hdu1573 X问题
今天一早晨都花在这题上了,昨天晚上看了一晚上终于把数论回忆了一下思路:解模不互质的线性同余方程组,wa了一早晨不知道哪里错了,估计是所有数的lcm求错了???不解,后来没有独立的求lcm,而是用合并方程的最后一个lcm就AC了,(主要是一开始没想到用这个。。。还另外求,智商拙计啊)code:#include #include #include #define LL __int原创 2012-09-22 10:11:45 · 505 阅读 · 0 评论 -
hdu1299 Diophantus of Alexandria
这题还是比较水的,因为稍微一整理就可以转化为求n的平方的因子个数的一半+1,因为n的平方的因子个数必定为奇数个;可怜TLE,MLE了若干次,竟然把素数表打到了10^9次方,真是智商拙计。code#include #include #define LL __int64using namespace std;const int MAXN = 40010;LL p原创 2012-10-10 10:54:32 · 376 阅读 · 0 评论 -
hdu3307 Description has only two Sentences
刚开始花了很长时间化简,求出x^k mod a0=1来却不知道怎么去求解。。。。看了解题报告,套用欧拉函数,因为 x^φ(a0) mod a0 =1,所以除了无解的情况,最大的解也不会超过φ(a0),然后比较φ(a0)的因子里,找一个最小的即可。对于无解的情况,即 Gcd(x,a0)!=1 ,假设存在共同因子m,那么x=x' * m,a0=a0' * m;则 (x' * m)^k - t*原创 2012-10-08 15:19:55 · 507 阅读 · 0 评论 -
hdu4291 A Short problem
完全被虐啊,见识太少,完全没有意识到取模必定会有循环节的问题,所以束手无策。。。。。先暴力本地算出最外层取模的循环节,在依次往里推循环节,还需要注意两个long long型相乘的溢出问题,不过这道题好像没有这么极端的数据code:#include #include #define LL __int64using namespace std;LL modular_multi(原创 2012-09-18 22:53:40 · 335 阅读 · 0 评论 -
关于欧拉函数的两种求法
第一种:LL Eular(LL n){ LL fac,ans=1; for(fac=2;fac*fac<=n;fac++) { if(n%fac==0) { n/=fac; ans*=fac-1; while(n%fac==0) {原创 2012-10-08 09:04:35 · 1035 阅读 · 0 评论 -
Miller-Rabin素性检测
Miller-Rabin 素性检测,是一种概率性的素数测定法,它以费马小定理引出费马小定理:如果n是一个素数,且a,n的最大公约数等于1,那么a^(n-1) =1 (mod n)。因为费马小定理是一个必要条件,逆命题不成立,但是使逆命题不成立的数非常少,所以可以概率测试;成功率号称在99.99%左右........二次探测定理:如果n是一个素数,那么对于任意x(0 证明:x^2≡1(m原创 2012-07-01 13:21:23 · 756 阅读 · 0 评论 -
zoj 2562 More Divisors
求反序数对于任何正整数x,记约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0有两条性质,没有想明白怎么推出来的 直接百度借用了性质一:一个反素数的质因子必然是从2开始连续的质数.因为最多只需要10个素数构造:2,3,5,7,11,13,17,19,23,29性质二:p=2^t1*3^t2*5^t3*7^t4…..必原创 2012-05-31 17:30:23 · 336 阅读 · 0 评论 -
约瑟夫问题-O(n)算法实现
无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。我们注意到原问题仅仅是要求出最后的胜利者的序号,而不是要读者模拟整个过程。因此如果要追求效率,就要打破常规,实施一点数学策略。 为了讨论方便,先把问题稍微改变一下,并不影响原意:原创 2012-05-27 13:54:03 · 550 阅读 · 0 评论 -
zoj 2974 Just Pour the Water
思路:由于M相当之大,因此可以构造矩阵快速幂来求解mat[i][j]表示第i个被子给第j个被子的水的百分比,如果k==0,则全给自己,mat[i][i]=1.0;代码如下:#include #include #include #include #include #include #include #include #define MAX 31using namespa原创 2012-05-27 14:29:45 · 532 阅读 · 0 评论 -
二倍压缩素数筛法
求1-MAX之间的素数,以及它们的个数,大家都知道,在偶数中,只有2是素数,所以,我们可以认为偶数都不是素数,直接掠过,最后再把2添加进去这样,我们可以只记录奇数的状态,p[n],就表示2*n+1是不是素数=========================================表示域:表示元素:n=====================||=============转载 2012-05-27 13:43:18 · 521 阅读 · 0 评论 -
poj 3233 Matrix Power Series
第一次接触矩阵这东西,不怎么会;矩阵乘法:自学百度;快速幂:自学百度;k为偶数时:A^1+A^2+..+A^k==(A^1+..+A^(k/2))*A^(k/2)+(A^1+...+A^(k/2));k为奇数时:A^1+A^2+..+A^k==(A^1+..+A^(k/2))*A^(k/2+1)+(A^1+...+A^(k/2))+A^(k/2+1);代码如下#incl原创 2012-05-27 14:28:40 · 253 阅读 · 0 评论 -
poj1845 Sumdiv
题意:求A^B的值的所有因子的和模9901,例如2^3=8 => 1+2+4+8=15。最后答案为 15。分析:先将A^B分解成素因数形式:A^B = (P1^k1) + (P2^k2) + (P3^k3) + ...那么A^B所有因子之和就是:S = (1 + P1^1 + P1^2 + P1^3 +...+ P1^K) * (1 + P2^1 + P2^2 + P2原创 2012-05-27 14:25:00 · 263 阅读 · 0 评论 -
hdu1757 A Simple Math Problem
题目自己找吧,不贴了思路:构造如下矩阵a0a1a2a3a4a5a6a7a8a9 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0原创 2012-05-27 14:31:06 · 309 阅读 · 0 评论