Number Theory
paul08colin
这个作者很懒,什么都没留下…
展开
-
modular exponentiation/快速幂取模
int quickmode(int base,int exponent,int modulus) { int result=1; while(exponent>0) { if((exponent&1)==1) { result=(result*base)%modulus; } exponent=exponent>>1; base=(base*base)%modulus; } retu原创 2011-05-27 14:32:00 · 612 阅读 · 0 评论 -
扩展欧几里德算法(extended_euclid)
<br /> ax+by=gcd(a,b)=gcd(b,a%b),ax+by=bx'+a%by'=bx'+(a-(a/b)*b)y'<br /> =ay'+b(x'-(a/b)*y'<br /> 则x=y',y=(x'-(a/b)*y;<br /> 另外:b=0时,gcd(a,b)=a;此时x=1,y=0;,递归可求出一个解;<br /> 其他解如何求呢?ax+by=ax'+by' 则有a(x-x')=b(y'-y);<b原创 2011-05-31 11:48:00 · 1607 阅读 · 0 评论 -
POJ2603 fundemental theorm arithmetic&& the num of divisor
As we all known, any integer greater than 1 can wrriten as unqie product of primes numbers. for example :100=(2^2)*(5^2); As for p原创 2011-08-20 09:56:10 · 414 阅读 · 0 评论 -
POJ 2635 N进制大数与小数取模
先把素数打表,然后进行大数取模,要取N进制(最好5 #include #include #include #include using namespace std; #define MLEN 10//每位存pow(10,MELN)进制(即每个位存放MLEN位数) #define MAXN 1000000 bool prime[MAXN + 10] = {1,1,0原创 2011-12-24 18:25:45 · 798 阅读 · 0 评论 -
poj2769 简单数论
这题是求最小的数m,使所有数对m求模的结果不一样。 利用a - b = m 则a % m == b % m 将任于两个数的差去掉,然后穷举其它每个数就行了。 #include #include #include #include using namespace std; const int MAXN = 1000010; bool visit[MAXN]; bool原创 2012-05-21 21:19:16 · 1829 阅读 · 0 评论 -
poj2992
一个多月没做题了。好好加油,将算法搞好 有两个公式可以解决这个问题:对于任于的数p = n1 ^p1 * n2 ^ p2 * n3 * p3 ..... p的因数个数为(1 + p1) * (1 + p2) * (1 + p3).... (1) 对 n!的质因子p的个数为(n/p + n /(p^2) + n (p ^3) + ...) c(n,m) = n!/(m!原创 2012-08-20 23:49:31 · 1350 阅读 · 0 评论