第八讲 ACM数论问题

上传人:hs****ma 文档编号:579382493 上传时间:2024-08-26 格式:PPT 页数:25 大小:313.50KB
返回 下载 相关 举报
第八讲 ACM数论问题_第1页
第1页 / 共25页
第八讲 ACM数论问题_第2页
第2页 / 共25页
第八讲 ACM数论问题_第3页
第3页 / 共25页
第八讲 ACM数论问题_第4页
第4页 / 共25页
第八讲 ACM数论问题_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《第八讲 ACM数论问题》由会员分享,可在线阅读,更多相关《第八讲 ACM数论问题(25页珍藏版)》请在金锄头文库上搜索。

1、ACMACM数论问题数论问题湖南工业大学湖南工业大学数论基本知识数论基本知识信息学竞赛和程序设计竞赛中常考的数论知识关于素数和整信息学竞赛和程序设计竞赛中常考的数论知识关于素数和整除,关键在于灵活应用除,关键在于灵活应用v整除整除: :如果如果a a和和b b是整数,是整数,a0a0,若有整数,若有整数c c使使b bacac,就说,就说a a整整除除b b。在。在a a整除整除b b时,记时,记a a是是b b的一个因子,的一个因子,b b是是a a的倍数。用符的倍数。用符号号abab表示表示a a整除整除b b,a a不能整除不能整除b b记为记为a ba b。v整除基本性质有:整除基本性

2、质有:(1 1)若)若abab, acac,则,则aa(b bc c)(2 2)若)若abab,则对所有整数,则对所有整数c c, abcabc(3 3)若)若abab, bcbc,则,则acac (传递性)(传递性)湖南工业大学湖南工业大学数论基本知识数论基本知识v素数(素数(primeprime)和合数()和合数(compoundcompound),如果一个整数),如果一个整数p p只有只有1 1和和p p两个因两个因子,则子,则p p为素数,不为素数的其它数为合数。为素数,不为素数的其它数为合数。如果如果n n为合数,则为合数,则n n必有一必有一个小于或等于个小于或等于n n的平方根的

3、数因子。的平方根的数因子。v给出一个数给出一个数n n,如何判断它是不是素数?,如何判断它是不是素数?朴素的判别法朴素的判别法 从从2 2开始试除小于开始试除小于n n的所有自然数,时间复杂度为的所有自然数,时间复杂度为O(nO(n).).如果如果a a是是n n的因子,那么的因子,那么n/an/a也是也是n n的因子,所以如果的因子,所以如果n n有一个大于有一个大于1 1的的真因子,则它必有一个不大于真因子,则它必有一个不大于n n1/21/2的因子,时间复杂度的因子,时间复杂度O(nO(n1/21/2) )。v算术基本定理:每个正整数都可以唯一地表示成素数的乘积。其中素算术基本定理:每个

4、正整数都可以唯一地表示成素数的乘积。其中素数因子从小到大依次出现。数因子从小到大依次出现。v最大公约数最大公约数gcd(agcd(a, b), b)v最小公倍数最小公倍数lcm(alcm(a, b), b)vababgcd(agcd(a, , b)lcm(ab)lcm(a, b), b)v如果如果gcd(agcd(a, b)=1, b)=1,则,则a a与与b b互素。互素。工大工大ACM团队团队湖南工业大学湖南工业大学素数算法素数算法 v最一般的求解最一般的求解n n以内素数的算法。复杂度是以内素数的算法。复杂度是o(no(n* *sqrt(nsqrt(n),适合,适合n n很小很小num

5、= 0; for(i=2; i=n; i+) for(j=2; jsqrt(i) ) primenum+ = i; 工大工大ACM团队团队湖南工业大学湖南工业大学素数素数v当当n n很大的时候,比如很大的时候,比如n=10,000,000n=10,000,000时,时,n*n*sqrt(nsqrt(n)30,000,000,000,)30,000,000,000,数量级相当大数量级相当大v思考如何改进?思考如何改进?工大工大ACM团队团队湖南工业大学湖南工业大学素数筛法素数筛法v最简单的素数筛法最简单的素数筛法开一个大的bool型数组prime,大小就是n+1就可以了.先把所有的下标为奇数的标

6、为true,下标为偶数的标为false.把奇数的倍数设为false. 见代码-prime_choice.cv改进的素数筛法改进的素数筛法boolbool型数组里面只存奇数不存偶数。如定义型数组里面只存奇数不存偶数。如定义primeNprimeN,则则0 0表示表示3 3,1 1表示表示5 5,2 2表示表示7 7,3 3表示表示9.9.。如果。如果prime0prime0为为true,true,则表示则表示3 3时素数。时素数。prime3prime3为为falsefalse意味着意味着9 9是合数,是合数,每个单元代表的数是每个单元代表的数是2*i+32*i+3。欲求欲求n n以内的素数,就

7、先把以内的素数,就先把sqrt(nsqrt(n) )内的素数求出来,用已内的素数求出来,用已经求得的素数来筛出后面的合数。经求得的素数来筛出后面的合数。 工大工大ACM团队团队湖南工业大学湖南工业大学数论基本知识数论基本知识v如何求出如何求出1 1n n中的所有素数?中的所有素数? EraosthenesEraosthenes(爱拉托斯尼筛法)筛法:每次求出一个新的素数,就把(爱拉托斯尼筛法)筛法:每次求出一个新的素数,就把n n以内的它的所有倍数都筛去。以内的它的所有倍数都筛去。经典的经典的Eraosthenes筛法:筛法:for(inti=2;i*iN;i+)if(tagi)continu

8、e;for(intj=i;i*jN;j+)tagi*j=1;for(inti=2;iN;i+)if(!tagi)primetol+=i;一种线性筛素数的方法(复杂度是一种线性筛素数的方法(复杂度是O(n)):):voidget_prime()intcnt=0;for(inti=2;iN;i+)if(!tagi)pcnt+=i;for(intj=0;jcnt&pj*iN;j+)tagi*pj=1;if(i%pj=0)break;/可以用均摊分析的方法来分析算法的复杂度可以用均摊分析的方法来分析算法的复杂度,由于每由于每个合数都唯一的被它的最小素因子筛一次,而每个合个合数都唯一的被它的最小素因子筛

9、一次,而每个合数的最小素因子都是唯一的,总复杂度是数的最小素因子都是唯一的,总复杂度是O(n) Eraosthenes筛法的速度并不快,原因在于对于一个合数,这种方法会重复的标记筛法的速度并不快,原因在于对于一个合数,这种方法会重复的标记工大工大ACM团队团队湖南工业大学湖南工业大学伪素数伪素数v同余:同余:ab(modab(mod m) m)如果两个数如果两个数a a和和b b之差能被之差能被m m整除,那么我们就说整除,那么我们就说a a和和b b对模数对模数m m同余。同余。比如,比如,100-60100-60除以除以8 8正好除尽,我们就说正好除尽,我们就说100100和和6060对于

10、模数对于模数8 8同余。它同余。它的另一层含义就是说,的另一层含义就是说,100100和和6060除以除以8 8的余数相同。的余数相同。a a和和b b对对m m同余,我同余,我们记作们记作ab(modab(mod m) m)。比如,刚才的例子可以写成。比如,刚才的例子可以写成10060(mod 8)10060(mod 8)。你会发现这种记号到处都在用,比如和数论相关的书中就经常把你会发现这种记号到处都在用,比如和数论相关的书中就经常把a a mod 3 = 1mod 3 = 1写作写作a1(mod 3)a1(mod 3)。 工大工大ACM团队团队湖南工业大学湖南工业大学伪素数伪素数v同余:同

11、余:ab(modab(mod m) m)如果两个数如果两个数a a和和b b之差能被之差能被m m整除,那么我们就说整除,那么我们就说a a和和b b对模数对模数m m同余。同余。比如,比如,100-60100-60除以除以8 8正好除尽,我们就说正好除尽,我们就说100100和和6060对于模数对于模数8 8同余。同余。它的另一层含义就是说,它的另一层含义就是说,100100和和6060除以除以8 8的余数相同。的余数相同。a a和和b b对对m m同同余,我们记作余,我们记作ab(modab(mod m) m)。比如,刚才的例子可以写成。比如,刚才的例子可以写成10060(mod 8)10

12、060(mod 8)。你会发现这种记号到处都在用,比如和数论相。你会发现这种记号到处都在用,比如和数论相关的书中就经常把关的书中就经常把a mod 3 = 1a mod 3 = 1写作写作a1(mod 3)a1(mod 3)。 v伪素数:它满足费马小定理,但其本身却不是素数。最小的伪素数伪素数:它满足费马小定理,但其本身却不是素数。最小的伪素数是是341341。事实上,费马小定理给出的是关于素数判定的必要非充分条。事实上,费马小定理给出的是关于素数判定的必要非充分条件。若件。若n n能整除能整除2(n-1)-12(n-1)-1,并,并n n是非偶数的合数,那么是非偶数的合数,那么n n就是伪素

13、数。就是伪素数。第一个伪素数第一个伪素数341 341 是萨鲁斯在是萨鲁斯在18191819年发现的。年发现的。v费马尔小定理:若费马尔小定理:若n n是素数,且是素数,且ana0a0则则a an-1n-11(mod n)1(mod n) 或或 a an-1 n-1 mod n =1 mod n =1 即即 (a(an-1n-1-1)/n=0-1)/n=02(5-1)-1=15,15|5. 2(3-1)-1=3,3|3.2(5-1)-1=15,15|5. 2(3-1)-1=3,3|3.但很多都是素数,如但很多都是素数,如3 3,5 5,7 7,2929,31 181931 1819年数学家萨鲁

14、斯找到了反例:年数学家萨鲁斯找到了反例:2(341-2(341-1)-1|341,1)-1|341,而而341=11*31341=11*31是合数,是合数,341341就成了第一个伪素数。以后就成了第一个伪素数。以后又发现了许多伪素数:又发现了许多伪素数:561 645 1105 1387 1729 561 645 1105 1387 1729 工大工大ACM团队团队湖南工业大学湖南工业大学伪素数伪素数v伪素数的一个用途伪素数的一个用途利用伪素数表来判定一个奇数n是否为素数。如果n不能整除2(n-1)1,则据费马小定理知,n必为合数;如果n能整除2(n-1)1 ,且n在伪素数表中,则n为合数,

15、否则为素数。这种方法的关键就在于按伪素数表去掉伪素数,而这要求伪素数在能整除2(n-1)1的数中相当少才行,这就是当n整除2(n-1)1时,n是合数的比例问题。在前10亿个自然数中,共有50847534个素数,而只有以2为底的伪素数5597个,即在此范围内n整除2n-11产生合数的可能性只有0.011%。在10亿之内,n整除2(n-1)1同时整除3(n-1)1 的合数n只有1272个,即此时产生合数的可能性只有0.0025%。工大工大ACM团队团队湖南工业大学湖南工业大学Miller-Rabbin测试测试v如果如果n n是一个正整数,如果存在和是一个正整数,如果存在和n n互素的正整数互素的正

16、整数a a满足满足an-11(mod an-11(mod n)n),我们说,我们说n n是基于是基于a a的伪素数。如果一个数是伪素数,它几乎肯定是的伪素数。如果一个数是伪素数,它几乎肯定是素数。素数。function Miller-function Miller-Rabbin(n:longint):booleanRabbin(n:longint):boolean; ; begin begin for i:=1 to s do for i:=1 to s do Begin Begin a:=random(n-2)+2; a:=random(n-2)+2; If modular_exp(a,n-

17、1,n)1 then If modular_exp(a,n-1,n)1 then return false; return false; end; end; End; End; return true; return true; End; End;工大工大ACM团队团队湖南工业大学湖南工业大学大数的素性判断大数的素性判断v对于大数的素性判断,目前对于大数的素性判断,目前Miller-RabinMiller-Rabin算法应用最广泛。算法应用最广泛。v一般底数仍然是随机选取,但当待测数不太大时,选择测试底数就有一一般底数仍然是随机选取,但当待测数不太大时,选择测试底数就有一些技巧了。些技巧了。v

18、比如,如果被测数小于比如,如果被测数小于4 759 123 1414 759 123 141,那么只需要测试三个底数,那么只需要测试三个底数2, 72, 7和和6161就足够了。当然,你测试的越多,正确的范围肯定也越大。就足够了。当然,你测试的越多,正确的范围肯定也越大。v如果你每次都用前如果你每次都用前7 7个素数个素数(2, 3, 5, 7, 11, 13(2, 3, 5, 7, 11, 13和和17)17)进行测试,所有不进行测试,所有不超过超过341 550 071 728 320341 550 071 728 320的数都是正确的。的数都是正确的。v如果选用如果选用2, 3, 7,

19、612, 3, 7, 61和和2425124251作为底数,那么作为底数,那么10161016内唯一的强伪素数为内唯一的强伪素数为46 856 248 255 98146 856 248 255 981。v这样的一些结论使得这样的一些结论使得Miller-RabinMiller-Rabin算法在算法在OI(OI(信息学奥林匹克竞赛信息学奥林匹克竞赛 ) )中非中非常实用。通常认为,常实用。通常认为,Miller-RabinMiller-Rabin素性测试的正确率可以令人接受,随素性测试的正确率可以令人接受,随机选取机选取 k k个底数进行测试算法的失误率大概为个底数进行测试算法的失误率大概为4

20、(-k)4(-k)。v伪素数:如果伪素数:如果n n是一个正整数,并且存在和是一个正整数,并且存在和n n互素的正整数互素的正整数a a满足满足a an-1n-1 1(mod n), 1(mod n), 我们说我们说n n是基于是基于a a的伪素数。如果一个数是伪素数,它几乎肯的伪素数。如果一个数是伪素数,它几乎肯定是素数。另一方面,如果一个数不是伪素数,它一定不是素数。定是素数。另一方面,如果一个数不是伪素数,它一定不是素数。工大工大ACM团队团队湖南工业大学湖南工业大学HDOJ_1108 最小公倍数 v给定两个正整数,计算这两个数的最小公倍数。 v10 14 10 14 v7070工大工大

21、ACM团队团队湖南工业大学湖南工业大学欧几里德算法vint gcd(int da,int xiao) int gcd(int da,int xiao) v int temp; int temp; v while (xiao!=0) while (xiao!=0) v v temp=da%xiao; temp=da%xiao; v da=xiao; da=xiao; v xiao=temp; xiao=temp; v v return(da); return(da);v 思考:思考:递归的形式如何写?递归的形式如何写?工大工大ACM团队团队湖南工业大学湖南工业大学扩展的欧几里德算法扩展的欧几里德

22、算法v对于不完全为对于不完全为 0 0 的非负整数的非负整数 a a,b b,gcdgcd(a a,b b)表示)表示 a a,b b 的最大公约的最大公约数,必然存在整数对数,必然存在整数对 x x,y y ,使得,使得 gcdgcd(a a,b b)= =ax+byax+by。如果。如果gcd(agcd(a, b), b)d d,那么一定存在,那么一定存在x x,y y满足满足axaxbybyd d。v扩扩展欧几里得算法其实是解二元一次不定方程的算法展欧几里得算法其实是解二元一次不定方程的算法, , Function Function extended_gcd(a,b:longintext

23、ended_gcd(a,b:longint; ; VarVar x,y:longint):longintx,y:longint):longint; ;BeginBegin if b=0 then begin if b=0 then begin extended_gcdextended_gcd:=a;:=a; x:=1; x:=1; y:=0; y:=0; end else begin end else begin extended_gcdextended_gcd:=:=extended_gcd(bextended_gcd(b, a mod b);, a mod b); t:=x; t:=x;

24、x:=y; x:=y; y:=t-(a div b) * y; y:=t-(a div b) * y; end; end;End;End;工大工大ACM团队团队湖南工业大学湖南工业大学扩展的欧几里德算法扩展的欧几里德算法v求解求解 x x,y y的方法的理解的方法的理解设设 abab。 1 1,显然当,显然当 b=0b=0,gcdgcd(a a,b b)=a=a。此时。此时 x=1x=1,y=0y=0; 2 2,abab0 0 时时 设设 ax1+by1=ax1+by1=gcd(a,bgcd(a,b); ); bx2+(a mod b)y2=bx2+(a mod b)y2=gcd(b,agcd

25、(b,a mod b); mod b); 根据朴素的欧几里德原理有根据朴素的欧几里德原理有 gcd(a,bgcd(a,b)=)=gcd(b,agcd(b,a mod mod b); b); 则则:ax1+by1=bx2+(a mod b)y2; :ax1+by1=bx2+(a mod b)y2; 即即:ax1+by1=bx2+(a-(a/b)*b)y2=ay2+bx2-(a/b)*by2; :ax1+by1=bx2+(a-(a/b)*b)y2=ay2+bx2-(a/b)*by2; 根据恒等定理得:根据恒等定理得:x1=y2; y1=x2-(a/b)*y2;x1=y2; y1=x2-(a/b)*

26、y2; v这样我们就得到了求解这样我们就得到了求解 x1,y1 x1,y1 的方法:的方法:x1x1,y1 y1 的值基于的值基于 x2x2,y2. y2. 工大工大ACM团队团队湖南工业大学湖南工业大学扩展的欧几里德算法扩展的欧几里德算法intint exGcd(intexGcd(int a, a, intint b, b, intint &x, &x, intint &y) &y) if(bif(b = 0) = 0) x = 1; y = 0; return a; intint r = r = exGcd(bexGcd(b, a % b, x, y); , a % b, x, y); i

27、ntint t = x; t = x; x = y; x = y; y = t - a / b * y; y = t - a / b * y; 工大工大ACM团队团队湖南工业大学湖南工业大学扩展的欧几里德算法的应用扩展的欧几里德算法的应用vPOJ 1061-POJ 1061-青蛙的约会青蛙的约会 v两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前是它们约定各自朝西跳,直到碰面为止。可是

28、它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。序来判断这两只青蛙

29、是否能够碰面,会在什么时候碰面。 我们把这两只青蛙分别叫做青蛙我们把这两只青蛙分别叫做青蛙A A和青蛙和青蛙B B,并且规定纬度线,并且规定纬度线上东经上东经0 0度处为原点,由东往西为正方向,单位长度度处为原点,由东往西为正方向,单位长度1 1米,这米,这样我们就得到了一条首尾相接的数轴。设青蛙样我们就得到了一条首尾相接的数轴。设青蛙A A的出发点坐的出发点坐标是标是x x,青蛙,青蛙B B的出发点坐标是的出发点坐标是y y。青蛙。青蛙A A一次能跳一次能跳m m米,青蛙米,青蛙B B一次能跳一次能跳n n米,两只青蛙跳一次所花费的时间相同。纬度线米,两只青蛙跳一次所花费的时间相同。纬度线总

30、长总长L L米。现在要你求出它们跳了几次以后才会碰面。米。现在要你求出它们跳了几次以后才会碰面。工大工大ACM团队团队湖南工业大学湖南工业大学POJ 1061v输入只包括一行输入只包括一行5 5个整数个整数x x,y y,m m,n n,L L,其中,其中xyxy 20000000002000000000,0 m0 m、n 2000000000n 2000000000,0 L 0 L 21000000002100000000。v输出碰面所需要的跳跃次数,如果永远不可能碰面则输出输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行一行ImpossibleImpossible 工大工大ACM团队

31、团队湖南工业大学湖南工业大学POJ 1061vInputInput 输入只包括一行输入只包括一行5 5个整数个整数x x,y y,m m,n n,L L,其中,其中xyxy 20000000002000000000,0 m0 m、n 2000000000n 2000000000,0 L 0 L 21000000002100000000。vOutputOutput 输出碰面所需要的跳跃次数,如果永远不可能碰面则输出输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行一行ImpossibleImpossiblevSample InputSample Input 1 2 3 4 5 1 2 3 4

32、 5 vSample OutputSample Output 4 4 工大工大ACM团队团队湖南工业大学湖南工业大学解题思路解题思路v此题其实就是扩展欧几里德算法求解不定方程,线性同此题其实就是扩展欧几里德算法求解不定方程,线性同余方程。余方程。设过设过s s步后两青蛙相遇,则必满足以下等式:步后两青蛙相遇,则必满足以下等式:( (x+mx+m* *s)-(y+ns)-(y+n*s)=k*s)=k*l(kl(k=0,1,2.)=0,1,2.)稍微变一下形得:稍微变一下形得:( (n-mn-m)*)*s+ks+k*l=*l=x-yx-y 令令n-mn-m= =a,ka,k= =b,x-yb,x-

33、y=c,=c,即即a*a*s+bs+b*l=c*l=cv只要上式存在整数解,则两青蛙能相遇,否则不能。只要上式存在整数解,则两青蛙能相遇,否则不能。v首先想到的一个方法是用两次首先想到的一个方法是用两次forfor循环来枚举循环来枚举s,ls,l的值,看的值,看是否存在是否存在s,ls,l的整数解,若存在则输入最小的的整数解,若存在则输入最小的s s,但显然这,但显然这种方法是不可取的,谁也不知道最小的种方法是不可取的,谁也不知道最小的s s是多大,如果最是多大,如果最小的小的s s很大的话,超时是明显的。很大的话,超时是明显的。工大工大ACM团队团队湖南工业大学湖南工业大学解题思路解题思路v

34、求求a * x + b * y = na * x + b * y = n的整数解。的整数解。1 1、先计算、先计算Gcd(a,bGcd(a,b) ),若,若n n不能被不能被Gcd(a,bGcd(a,b) )整除,则方程无整整除,则方程无整数解;否则,在方程两边同时除以数解;否则,在方程两边同时除以Gcd(a,bGcd(a,b) ),得到新的不定,得到新的不定方程方程a * x + b * y = na * x + b * y = n,此时,此时Gcd(a,bGcd(a,b)=1;)=1;22、利用上面所说的欧几里德算法求出方程、利用上面所说的欧几里德算法求出方程a * x + b a * x

35、 + b * y = 1* y = 1的一组整数解的一组整数解x0,y0x0,y0,则,则n * x0,n * y0n * x0,n * y0是方程是方程a a * x + b * y = n* x + b * y = n的一组整数解;的一组整数解;3 3、根据数论中的相关定理,可得方程、根据数论中的相关定理,可得方程a * x + b * y = a * x + b * y = nn的所有整数解为:的所有整数解为: x = n * x0 + b * tx = n * x0 + b * t y = n * y0 - a * t (t y = n * y0 - a * t (t为整数为整数) )

36、v上面的解也就是上面的解也就是a * x + b * y = n a * x + b * y = n 的全部整数解。的全部整数解。工大工大ACM团队团队湖南工业大学湖南工业大学解题思路解题思路v此时方程的所有解为:此时方程的所有解为:x=c*k1-b*tx=c*k1-b*t。vx x的最小的可能值是的最小的可能值是0 0令x=0,可求出当x最小时的t的取值,但由于x=0是可能的最小取值,实际上可能x根本取不到0,那么由计算机的取整除法可知:由 t=c*k1/b算出的t,代回x=c*k1-b*t中。求出的x可能会小于0,此时令t=t+1,求出的x必大于0;如果代回后x仍是大于等于0的,那么不需要

37、再做修正。 工大工大ACM团队团队湖南工业大学湖南工业大学核心代码分析核心代码分析 while(scanf(%I64d%I64d%I64d%I64d%I64d,&x,&y,&m,&n,&l)!=EOF) while(scanf(%I64d%I64d%I64d%I64d%I64d,&x,&y,&m,&n,&l)!=EOF) a=n-m; a=n-m; b=l; b=l; c=x-y; c=x-y; r=gcd(a,b); r=gcd(a,b); if(c%r) if(c%r) printf(Impossiblen); printf(Impossiblen); continue; continue

38、; a/=r; b/=r; c/=r; a/=r; b/=r; c/=r; exgcd(a,b,k1,k2); exgcd(a,b,k1,k2); t=c*k1/b; t=c*k1/b; k1=c*k1-t*b; k1=c*k1-t*b; if(k10) if(k10) k1+=b; k1+=b; printf(%I64dn,k1); printf(%I64dn,k1); 工大工大ACM团队团队湖南工业大学湖南工业大学练习题练习题vpku:1006, 1014, 1023, 1061, 1152, 1183, 1730, pku:1006, 1014, 1023, 1061, 1152, 1183, 1730, 2262, 2356, 1811 2262, 2356, 1811 工大工大ACM团队团队

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号