数学
文章平均质量分 84
laserss
laserss@qq.com
展开
-
hdu1757A Simple Math Problem 矩阵乘法
hdu1757A Simple Math Problem 问题是怎么转化成矩阵相乘的呢?请参考:http://blog.csdn.net/fangzhiyang/article/details/6929747看懂了思路再用自己的代码实现(二维数组真心不方便,下次换结构体) #includeusing namespace std;int m0[11][11],m1原创 2012-07-20 01:21:23 · 1735 阅读 · 0 评论 -
hdu3037Saving Beans lucas定理
hdu3037lucas 对组合数取模lucas(n,m)=C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;lucas(n,0)=1;#include#includeusing namespace std;__int64 jc[100010];__int64 exgcd(__int64 a,__int64 b,__int64原创 2012-12-02 17:23:28 · 1095 阅读 · 0 评论 -
fzu2020 组合,逆元
fzu2020对组合数求模 需要用到逆元#include#include#include#includeusing 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 · 1191 阅读 · 0 评论 -
fzu2015vote 组合 逆元
fzu2015http://fayaa.com/code/view/27362/raw/#include#includeusing 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 · 796 阅读 · 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 · 1894 阅读 · 0 评论 -
hdu4135 互斥+容斥原理
hdu4135网上学到到的递归写法#include#include#includeusing 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 · 1937 阅读 · 0 评论 -
hdu2841 筛选素因子 容斥定理
hdu2841#include#include#define max 100001int 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 · 1161 阅读 · 0 评论 -
hdu2117Just A Numble-数学
hdu2117小范围模拟除法#includeint 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 · 546 阅读 · 0 评论 -
欧拉函数
欧拉函数:求小于n且与n互质(最大公约数为1)的数的个数#includeint 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 · 1538 阅读 · 0 评论 -
hdu1085Holding Bin-Laden Captive!-简单题
hdu1085Holding Bin-Laden Captive!#includeusing 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 · 668 阅读 · 0 评论 -
hdu2824筛选法欧拉函数+求和
hdu2824筛选版本的欧拉公式模板#include#define MAX 3000000using 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 · 2662 阅读 · 0 评论 -
扩展欧几里德
在辗转相除gcd(a,b)的基础上加以扩展可以得到使等式 a*x+b*y=1 成立的解#includeusing 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 · 798 阅读 · 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 · 1363 阅读 · 0 评论 -
pku1942-Paths on a Grid
本质上是组合数公式 一开始是用搜索模拟 太慢了pku1942Runtime Error#include#includeusing 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 · 641 阅读 · 0 评论 -
hdu1576
http://acm.hdu.edu.cn/showproblem.php?pid=1576 不懂…………………… #includeusing 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 · 711 阅读 · 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 · 836 阅读 · 1 评论