ACM+数论常用的模版.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

欧几里德

#includeiostream

usingnamespacestd;

inthcf(inta,intb)

{

intr=0;

while(b!=0)

{

r=a%b;

a=b;

b=r;

}

return(a);

}

lcd(intu,intv,inth)//u=a,v=b,h为最小公约数=hcf(a,b);

{

return(u*v/h);

}

intmain()

{

inta,b,x,y;

cinab;

x=hcf(a,b);

y=lcd(a,b,x);

coutxyendl;

return0;

}

扩展欧几里德

#includeiostream

usingnamespacestd;

__int64ext_euclid(__int64a,__int64b,__int64x,__int64y)

{

intt;

__int64d;

if(b==0){x=1;y=0;returna;}

d=ext_euclid(b,a%b,x,y);

t=x;

x=y;

y=t-a/b*y;

returnd;

}

voidmodular_equation(__int64a,__int64b,__int64c)//ax=b(modn)

{

__int64d;

__int64x,y;

d=ext_euclid(a,b,x,y);

if(c%d!=0)

printf(Noanswer\n);

else

{

x=(x*c/d)%b;//第一次求出的x;

__int64t=b/d;

x=(x%t+t)%t;

printf(%I64d\n,x);//最小的正数的值

for(inti=0;id;i++)

printf(The%dthansweris:%ld\n,i+1,(x+i*(b/d))%b);//所有的正数值

}

}

/*

函数返回值为gcd(a,b),并顺带解出ax+by=gcd(a,b)的一个解x,y,

对于不定方程ax+by=c的通解为:

x=x*c/d+b/d*t

y=y*c/d+a/d*t

当c%gcd(a,b)!=0时,不定方程无解.*/

中国剩余定理

#includeiostream

usingnamespacestd;

intext_euclid(inta,intb,intx,inty)//求gcd(a,b)=ax+by

{

intt,d;

if(b==0){x=1;y=0;returna;}

d=ext_euclid(b,a%b,x,y);

t=x;

x=y;

y=t-a/b*y;

returnd;

}

intChina(intW[],intB[],intk)//W为按多少排列,B为剩余个数WBK为组数

{

inti;

intd,x,y,a=0,m,n=1;

for(i=0;ik;i++)

n*=W[i];

for(i=0;ik;i++)

{

m=n/W[i];

d=ext_euclid(W[i],m,x,y);

a=(a+y*m*B[i])%n;

}

if(a0)

returna;

else

return(a+n);

}

intmain()

{

intB[100],W[100];求

intk;a=2(mod5)

cink;a=3(mod13)

for(inti=0;ik;i++)的解

{2

cinW[i];52

cinB[i];

文档评论(0)

liuzhouzhong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档