预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共77页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一、数论1:WolfandRabbit描述Thereisahillwithnholesaround、Theholesaresignedfrom0ton-1、Arabbitmusthideinoneoftheholes、Awolfsearchestherabbitinanticlockwiseorder、Thefirstholehegetintoistheonesignedwith0、Thenhewillgetintotheholeeverymholes、Forexample,m=2andn=6,thewolfwillgetintotheholeswhicharesigned0,2,4,0、Iftherabbithidesintheholewhichsigned1,3or5,shewillsurvive、Sowecalltheseholesthesafeholes、输入TheinputstartswithapositiveintegerPwhichindicatesthenumberoftestcases、ThenonthefollowingPlines,eachlineconsists2positiveintegermandn(0<m,n<2147483648)、输出Foreachinputmn,ifsafeholesexist,youshouldoutput"YES",elseoutput"NO"inasingleline、样例输入21222样例输出NOYESﻫ翻译:描述ﻫ一座山有n个洞,洞被标记为从0到n-1。兔子必须藏在一个洞中。狼会逆时针方向搜索兔子。狼一开始在洞0,然后她会每m个洞进去一次。例如:m=2,n=6,狼就会依次进入洞0240。如果兔子藏在135就安全。ﻫ输入第一行一个数字p,表示下面有p组测试数据,每组测试数据2个数mn(0<m,n<2147483648)ﻫ输出每组数据输出一行,如果存在安全洞穴,输出"YES",否则输出"NO"ﻫﻫ思路/方法:您就是不就是觉得总就是无法通过,瞧瞧下面得解析假设有n=6个洞012345当m=4时,狼进得洞就是0420,也就就是形成了一个循环,永远也到不了其她洞穴当m=5时,狼进得洞就是0543210,这时所有得洞都遍历了一遍。思考:当m=4与m=5时,到底有什么区别?当n与m有公约数(非1)时,就会形成一个数字个数小于n得循环当n与m无公约数时,就会形成一个数字个数为n得循环,此时没有安全洞穴。解题关键:这题就转化成了判断两个数就是否有公约数。ﻫ代码:#include<iostream>usingnamespacestd;longlonggreatestmonDivisor(longlonga,longlongb)//最大公约数{longlongt;while(b){t=a%b;a=b;b=t;}returna;}intmain(){inti,p;longlongm,n;cin>>p;for(i=0;i<p;i++){cin>>m>>n;if(greatestmonDivisor(m,n)==1)//公约数为1说明互斥,没有安全洞穴cout<<"NO\n";elsecout<<"YES\n";}return0;}2:a^b描述给定a与b,输出a^b得最后一个数字。输入输入数据有多组,每组数据占一行,每行为a与b得值(0<a,b<=2^30)输出对每组输入数据,输出a^b得最后一位数字,每组数据占一行。样例输入2234样例输出41思路/方法:如果您模拟a^b次肯定会超时,而且数字还会超出Int范围题目说只要最后一个数字,回想一下小学时学得乘法过程,貌似乘数最后一位与前面得无关我们大胆得尝试一下用a得个位代替a,然后我们发现循环b次还就是会超时,这就是我们要想办法减少循环得次数,试一下就是不就是有周期规律这时我们来列举一下2得n次方得个位:24862486我们发现周期为4,我们在试试1-9得n次方,发现周期都就是4,所以,我们可以用b%4代替b,需要注意得就是,当b%4==0时,我们需要给她加上4,不然就不循环了。代码:#include<stdio、h>intmain(){inta,b,i,t;while(scanf("%d%d",&a,&b)!=EOF){b=b%4;if(b==0)b=4;a=a%10;t=1;for(i=0;i<b;i++){t=t*a;t=t%10;}printf("%d\n",t);}return0;}3:筛选法求素数描述请使用筛选法输出[a,b]之间得所有素数。输入输入数据有多组,每组数据占一行,每行2个正整数a与b,其中2<=a<=b<=1000000。输出每组数据按从小到大得顺序输出[a,b]中所有得素数,每行最多输出10个素数。每组数据之后空一