
数学
文章平均质量分 84
laserss
laserss@qq.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu1757A Simple Math Problem 矩阵乘法
hdu1757A Simple Math Problem 问题是怎么转化成矩阵相乘的呢?请参考:http://blog.youkuaiyun.com/fangzhiyang/article/details/6929747 看懂了思路再用自己的代码实现 (二维数组真心不方便,下次换结构体) #include using namespace std; int m0[11][11],m1原创 2012-07-20 01:21:23 · 1770 阅读 · 0 评论 -
hdu3037Saving Beans lucas定理
hdu3037 lucas 对组合数取模 lucas(n,m)=C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod; lucas(n,0)=1; #include #include using namespace std; __int64 jc[100010]; __int64 exgcd(__int64 a,__int64 b,__int64原创 2012-12-02 17:23:28 · 1172 阅读 · 0 评论 -
fzu2020 组合,逆元
fzu2020 对组合数求模 需要用到逆元 #include #include #include #include using namespace std; __int64 Ext_gcd(__int64 a,__int64 b,__int64 &x,__int64 &y){ if(b==0) { x=1, y=0; return a; } __int64 r原创 2012-12-02 15:39:52 · 1228 阅读 · 0 评论 -
fzu2015vote 组合 逆元
fzu2015 http://fayaa.com/code/view/27362/raw/ #include #include using namespace std; __int64 jc[210],mod=1000000007; __int64 exgcd(__int64 a,__int64 b,__int64 &x,__int64 &y){ if(b==0) return原创 2012-12-02 15:37:24 · 830 阅读 · 0 评论 -
数论笔记
欧几里德算法概述: 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|) 欧几里得算法的公式表述 gcd(a,b)=gcd(b,a mod b) 证明:a可以表示成a = kb + r原创 2012-11-30 17:57:37 · 2004 阅读 · 0 评论 -
hdu4135 互斥+容斥原理
hdu4135 网上学到到的递归写法 #include #include #include using namespace std; int fac[20]; void Init(int m) { int i,n=0; for(i=2;i*i<=m;i++) if(m%i==0){ fac[++n]=i; while原创 2012-11-29 16:31:40 · 2000 阅读 · 0 评论 -
hdu2841 筛选素因子 容斥定理
hdu2841 #include #include #define max 100001 int Prim[max],num[max][20]; void init() { int i,j; memset(Prim,0,sizeof(Prim)); for(i=1; i<=100000; i++) num[i][0]=0; for(i=2; i<=100000; i+原创 2012-11-28 19:30:46 · 1206 阅读 · 0 评论 -
hdu2117Just A Numble-数学
hdu2117 小范围模拟除法 #include int main() { int m,n,i,j,sum,num; while(scanf("%d%d",&n,&m)!=EOF) { if(n==1) printf("0\n"); else { sum=10; for(i=1;i<=m;i++) { num=sum/n;原创 2012-09-10 21:53:42 · 581 阅读 · 0 评论 -
欧拉函数
欧拉函数:求小于n且与n互质(最大公约数为1)的数的个数 #include int Euler(int x) { int i,sum=x; for(i=2;i*i<=x;i++) { if(x%i==0) { sum-=sum/i; //不是很明白,为什么不是sum-=x/i ——参考因数分解 while(x%i==0) x/=i;原创 2012-08-18 14:04:45 · 1583 阅读 · 0 评论 -
hdu1085Holding Bin-Laden Captive!-简单题
hdu1085Holding Bin-Laden Captive! #include using namespace std; int main() { int n1,n2,n5; while(scanf("%d%d%d",&n1,&n2,&n5),n1+n2+n5) { if(n1==0) printf("1\n"); else if(2*n2+n1<4) print原创 2012-09-04 21:01:30 · 706 阅读 · 0 评论 -
hdu2824筛选法欧拉函数+求和
hdu2824 筛选版本的欧拉公式模板 #include #define MAX 3000000 using namespace std; __int64 E[MAX+10]; void init() //模板 { int i,j; memset(E,0,sizeof(E)); E[1]=1; for(i=2;i<=原创 2012-08-18 21:45:51 · 2711 阅读 · 0 评论 -
扩展欧几里德
在辗转相除gcd(a,b)的基础上加以扩展 可以得到使等式 a*x+b*y=1 成立的解 #include using namespace std; int x,y; int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } int exgcd(int a,int b,int &x,int &y) {原创 2012-08-18 17:14:23 · 841 阅读 · 0 评论 -
PKU2262 Goldbach's Conjecture 数论-素数
PKU2262 Goldbach's Conjecture 用筛选法生成素数表prime[MAX]。。。 之前一直把最简单的试除法当做筛选法来用,还认为效率很高, 然后这题就一直一直time limit exceed 1、试除法 用 n 除以 2-sqrt(n),有一个能除尽就不是素数,否则是素数。 时间复杂度:O(sqrt(n)) 2、素数原创 2012-07-16 14:10:31 · 1421 阅读 · 0 评论 -
pku1942-Paths on a Grid
本质上是组合数公式 一开始是用搜索模拟 太慢了 pku1942 Runtime Error #include #include using namespace std; __int64 dfs(__int64 x,__int64 y) { if(x==1||y==1) return 1; return dfs(x-1,y)+dfs(x,y-1); } int ma原创 2012-08-13 11:59:29 · 682 阅读 · 0 评论 -
hdu1576
http://acm.hdu.edu.cn/showproblem.php?pid=1576 不懂…………………… #include using namespace std; int main() { __int64 A,B,N,t; cin>>t; while(t--){ cin>>N>>B; __int64 num=B%9973; for(int i=0;;+原创 2012-07-24 14:33:10 · 756 阅读 · 0 评论 -
poj2689Prime Distance 素数筛选
poj2689Prime Distance 题目要求:在给定范围L~R中找出差值最大和最小的两组素数 要在L~R筛选素数 ,直接算出1~2,147,483,647的话肯定超时 但实际上,筛选1~2,147,483,647中的素数需要的因子并不多,只要找出2~sqrt(2,147,483,647)中的素数就够了,筛选法就是这么干的 之后用这些素数对L~R的原创 2013-04-01 13:54:38 · 874 阅读 · 1 评论