摘要:        
#include<stdio.h>#include<string.h>#include<math.h>#define LL long long#define nmax 3000001int prime[nmax], phi[nmax];int plen;void init() { int i, j; memset(phi, 0, sizeof(phi)); for (i = 2, plen = 0; i < nmax; i++) { if (!phi[i]) { phi[i]...    阅读全文
        
            posted @ 2011-10-11 21:02
qingyezhu
阅读(192)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
利用扩展欧几里德算法可以解方程ax+by=c.当使用扩展欧几里德算法时,当x+b时,y-a。欧几里德算法 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a mod b)的公约数,则 d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数 因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证 。其算法:(a为任意非负整数    阅读全文
        
            posted @ 2011-10-11 20:08
qingyezhu
阅读(412)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
#include<stdio.h>#include<math.h>#define LL long longLL a, b, x, y;LL gcd(LL p, LL q) { LL r = 1; while (r) { r = p % q; if (r) { p = q; q = r; } } return q;}LL solve() { LL i, te; b /= a; te = (LL) (sqrt(b * 1.0)); for (i = te; i >=...    阅读全文
        
            posted @ 2011-10-11 19:13
qingyezhu
阅读(346)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
/* * pku1811.c * * Created on: 2011-8-1 * Author: 王竹 */#include<stdio.h>#include<stdlib.h>#define LL long longLL pmin;LL modular_multi(LL a, LL b, LL c) { LL ret; ret = 0, a %= c; while (b) { if (b & 1) { ret += a; if (ret > c) { ret -= c; ...    阅读全文
        
            posted @ 2011-10-11 19:08
qingyezhu
阅读(408)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
#include<iostream>#include<algorithm>using namespace std;long long factor[110], cnt;long long Mul_Mod(long long a, long long b, long long c) { if (b == 0) return 0; long long ans = Mul_Mod(a, b / 2, c); ans = (ans * 2) % c; if (b % 2) ans = (ans + a) % c; return ans;}lon...    阅读全文
        
            posted @ 2011-10-11 19:04
qingyezhu
阅读(997)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
A*B mod C的快速计算方法2009-07-28 17:11:18|分类: 经典算法 |标签: |字号大中小订阅方法一: 大家都能想到,计算A*B的值,然后在计算A*B mod C的值。这是最简单的,但是这个有个弊端,即a*b的值不能太大,太大可能溢出。方法二:回顾进制转换的知识,二进制转换为10进制可以以2的权值相加(貌似是这样描述的)。比如13=(1101)2=1*2^3+1*2^2+0*2^1+1*2^0。同样的,当我们计算A*B的时候,也可以将B化成2^n相加的式子。于是,我们可以将a*b mod c转换成[a*(2^b0+2^b1+……2^bn)] mod c=[a*2^b0+a    阅读全文
        
            posted @ 2011-10-11 18:48
qingyezhu
阅读(742)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
递推公式:E(t)=(1+t+t^2/2!+......+..)^2*(1+t^2/2!+t^4/4!+..+)^2 =e^2t*((e^t+e^-t)/2)^2 =1/4(e^4t+2*e^2t+1) =sigma(1/4*[4^n+2*2^n+1]*t^n/n!) n=0,1,2,,, ==> a(n)=1/4(4^n+2*2^n)/* * poj3734.c * * Created on: 2011-10-11 * Author: bjfuwangzhu */#include<stdio.h>#define nmod 10007int modular_exp(int a    阅读全文
        
            posted @ 2011-10-11 17:44
qingyezhu
阅读(466)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
/* * FZU1759.cpp * * Created on: 2011-10-11 * Author: bjfuwangzhu */#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#define LL long long#define nnum 1000005#define nmax 31625int flag[nmax], prime[nmax];int plen;void mkprime() { int i, j; memset(flag, -1,     阅读全文
        
            posted @ 2011-10-11 16:43
qingyezhu
阅读(601)
评论(0)
推荐(0)
        
        
 
                     
                    
                 
                    
                
 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号