书签 分享 收藏 举报 版权申诉 / 45
上传文档赚钱

类型ACM题库完整版课件.ppt

  • 上传人(卖家):ziliao2023
  • 文档编号:5665698
  • 上传时间:2023-04-30
  • 格式:PPT
  • 页数:45
  • 大小:241KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《ACM题库完整版课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ACM 题库 完整版 课件
    资源描述:

    1、二项式系数二项式系数 1.题目描述题目描述二项式系数C(n,k)因它在组合数学中的重要性而被广泛地研究。二项式系数可以如下递归的定义:C(1,0)=C(1,1)=1;C(n,0)=1对于所有n 0;C(n,k)=C(n?1,k?1)+C(n?1,k)对于所有0 k n。给出n和k,你要确定C(n,k)的奇偶性。2.输入输入输入包含多组测试数据。每组测试数据一对整数n和k(0 k n 231),占据独立一行。文件结束符(EOF)表示输入结束。3.输出输出对每组测试数据,输出一行,包含一个“0”或一个“1”,即C(n,k)除以2的余数。4.样例输入样例输入1 11 02 15.样例输出样例输出11

    2、0#includeint fib(int n,int k)if(n=1&(k2)return 1;else if(k=0)return 1;elsereturn fib(n-1,k-1)+fib(n-1,k);int main()int n,k;while(scanf(%d%d,&n,&k)!=EOF)printf(%dn,fib(n,k)%2);return 0;构造新的模运算构造新的模运算1.题目描述题目描述给定整数a,b,n,要求计算(ab)mod n 2.输入输入多组数据,每组数据一行,为三个用空格隔开的整数a,b,n1=a=40,0=b=3,1=n=5003.输出输出每组数据输出一行

    3、,为所求值4.样例输入样例输入2 3 52 2 45.样例输出样例输出30#include#includeint main()答案有错答案有错int a,b,n;while(scanf(%d%d%dn,&a,&b,&n)!=EOF)printf(%dn,(int)(pow(a,b)%n);return 0;计算绩点计算绩点1.题目描述题目描述学校对本科生的成绩施行平均学分绩点制(GPA)。将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。曾经使用的规定如下:实际成绩 绩点 90-100 4.0 85-89 3.7 82-84 3.3 78-81 3.0 75-77 2.7 72-7

    4、4 2.3 68-71 2.0 64-67 1.5 60-63 1.0 60以下 0 1一门课程的学分绩点=该课绩点*该课学分 2总评绩点=所有学科绩点之和/所有课程学分之和 现要求你编写程序求出某人A的总评绩点(GPA)。2.输入输入第一行 总的课程数n(n10);第二行 相应课程的学分(两个学分间用空格隔开);第三行 对应课程的实际得分;此处输入的所有数字均为整数。3.输出输出输出有一行,总评绩点,精确到小数点后2位小数。(printf(%.2f,GPA);)5.样例输入样例输入54 3 4 2 391 88 72 69 566.样例输出样例输出2.52#include#includein

    5、t main()int n,i;float a10,c10,b10,sum=0,GPA,d;scanf(%d,&n);for(i=0;i=n-1;i+)scanf(%f,&ai);for(i=0;i=90)ci=4.0;else if(bi=85)ci=3.7;else if(bi=82)ci=3.3;else if(bi=78)ci=3.0;else if(bi=72)ci=2.3;else if(bi=68)ci=2.0;else if(bi=64)ci=1.5;else if(bi=60)ci=1.0;else bi=0;for(i=0;i=n-1;i+)sum+=ai*ci;for(i

    6、=0;i=n-1;i+)d+=ai;GPA=sum/d;printf(%.2f,GPA);return 0;将字符串中的小写将字符串中的小写字母转换成大写字字母转换成大写字母母1.题目描述题目描述给定一个字符串,将其中所有的小写字母转换成大写字母 2.输入输入一个字符串3.输出输出将输入的字符串中所有小写字母转换成大写字母后的字符串4.样例输入样例输入helloworld123Ha5.样例输出样例输出HELLOWORLD123HA#include#define N 100int main()int i;char c,strN;gets(str);i=0;while(stri!=0)if(str

    7、i=a&stri=z)stri=stri-32;i+;puts(str);return 0;日历问题日历问题 1.题目描述题目描述在我们现在使用的日历中,闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700,1800,1900 和 2100 不是闰年,而 1600,2000 和 2400是闰年。给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。2.输入输入输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是?1,不必处理。可以假设结果的年份不会超过9999。3.输出输

    8、出对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”,其中“DayOfWeek”必须是下面中的一个:Sunday,Monday,Tuesday,Wednesday,Thursday,Friday 或 Saturday“。4.样例输入样例输入1730 1740 1750 1751-15.样例输出样例输出2004-09-26 Sunday 2004-10-06 Wednesday 2004-10-16 Saturday 2004-10-17 Sunday6.提示提示2000.1.1.是星期六#includeint type(int);char

    9、week710=saturday,sunday,monday,tuesday,wednesday,thursday,friday;int year2=365,366;int month212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31;int main(void)int days,dayofweek;int i=0,j=0;while(scanf(%d,&days)&days!=-1)dayofweek=days%7;for(i=2000;days=yeartype(i);i+)days-=ye

    10、artype(i);for(j=0;days=monthtype(i)j;j+)days-=monthtype(i)j;printf(%d-%02d-%02d%sn,i,j+1,days+1,weekdayofweek);return 0;int type(int m)if(m%4!=0|(m%100=0&m%400!=0)return 0;elsereturn 1;求平均年龄求平均年龄1.题目描述题目描述班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位2.输入输入第一行有一个整数n(1=n=100),表示学生的人数。其后n行每行有1个整数,取值为15

    11、到25。3.输出输出输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。4.样例输入样例输入218175.样例输出样例输出17.506.提示提示要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:printf(%.2f,num);#includeint main()int n,i,sum,age;double num;scanf(%d,&n);for(i=0,sum=0;in;i+)scanf(%d,&age);sum+=age;num=(double)sum/n;printf(%.2f,num);return 0;数制转换数制转换1.题目描述题目描述将十进制数转换成指

    12、定的进制数 2.输入输入第一行输入一个正整数n,表示需要转换的进制数第二行输入一个十进制正整数3.输出输出转换成n进制的数4.样例输入样例输入6905.样例输出样例输出230数的距离差数的距离差 1.题目描述题目描述给定一组正整数,其中的最大值和最小值分别为max和min,其中的一个数x到max和min的距离差D定义为 abs(abs(x-max)-abs(x-min)。其中,abs()表示求一个数的绝对值2.输入输入输入第一行为整数n,剩余n行每行一个正整数。3.输出输出输出仅一行,它的值为使得距离差D最小的x4.样例输入样例输入5317595.样例输出样例输出56.提示提示函数abs()定

    13、义在stdlib.h中#include#include#define N 500int main()int aN,n,i,m,p,r,s,t;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);p=m=a0;for(i=1;iai)m=ai;if(pai)p=ai;s=abs(abs(a0-p)-abs(a0-m);t=a0;for(i=1;ir)s=r;t=ai;printf(%d,t);return 0;登山登山1.题目描述题目描述五一到了,NUIST-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的

    14、编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?2.输入输入Line 1:N(2=N=1000)景点数Line 2:N个整数,每个景点的海拔3.输出输出最多能浏览的景点数4.样例输入样例输入8186 186 150 200 160 130 197 2205.样例输出样例输出4#includeint f(int a1000,int n);int main()int n,a1000,i,m;scanf(%d,&n);for(i

    15、=0;i0;m-)for(i=1;iai-1)j+;for(i=m-1;in-1;i+)if(aiai+1)j+;bn-m=j;j=1;s=b0;for(i=1;in;i+)if(sbi)s=bi;return s;计算多项式的值计算多项式的值1.题目描述题目描述多项式f(x)=ax3+bx2+cx+d 2.输入输入输入仅一行,分别是x,及参数a、b、c、d的值,每个数都是双精度浮点数。3.输出输出输出也仅一行,f(x)的值,保留小数点后7位。4.样例输入样例输入2.31 1.2 2 2 35.样例输出样例输出33.08386926.提示提示使用printf(%.7lf,.)实现保留小数点后7

    16、位。#includeint main()double x,a,b,c,d,y;scanf(%lf%lf%lf%lf%lf,&x,&a,&b,&c,&d);y=a*x*x*x+b*x*x+c*x+d;printf(%.7lf,y);return 0;计算两个分数的和计算两个分数的和 1.题目描述题目描述输入两个分数,形式如1/2,计算它们的和,以分数形式输出 2.输入输入第一行为第一个分数第二行为第二个分数3.输出输出两个分数的和4.样例输入样例输入1/23/45.样例输出样例输出5/4#includeint main(void)int a,b,c,d,m,n,i=2;scanf(%d/%d,&

    17、a,&b);scanf(%d/%d,&c,&d);m=a*d+b*c,n=b*d;while(i=m&i=n)if(m%i=0&n%i=0)m=m/i,n=n/i;i+;printf(%d/%d,m,n);return 0;排序排序 1.题目描述题目描述按要求排序2.输入输入第一行为一个整数N(1=N=1000)第二行为N个绝对值不超过10000的整数,表示需要排序的序列3.输出输出输出N行,为N个整数按升序排序后的序列4.样例输入样例输入6100 201 6 8 10 995.样例输出样例输出6 8 10 99 100 2016.提示提示这N个数需要随机产生#include#define N

    18、 1000int main(void)int n,i,j,temp,aN;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);for(j=0;jn-1;j+)for(i=0;iai+1)temp=ai;ai=ai+1;ai+1=temp;for(i=0;in;i+)printf(%d,ai);return 0;日志排序日志排序 1.题目描述题目描述有一个网络日志,记录了网络中计算任务的执行情况,每个计算任务对应一条如下形式的日志记录:“hs_10000_p”是计算任务的名称,“2007-01-17 19:22:53,315”是计算任务开始执行的时间“年-月-日 时

    19、:分:秒,毫秒”,“253.035(s)”是计算任务消耗的时间(以秒计)hs_10000_p 2007-01-17 19:22:53,315 253.035(s)请你写一个程序,对日志中记录计算任务进行排序。时间消耗少的计算任务排在前面,时间消耗多的计算任务排在后面。如果两个计算任务消耗的时间相同,则将开始执行时间早的计算任务排在前面。2.输入输入日志中每个记录是一个字符串,每个字符串占一行。最后一行为空行,表示日志结束。日志中最多可能有10000条记录。计算任务名称的长度不超过10,开始执行时间的格式是YYYY-MM-DD HH:MM:SS,MMM,消耗时间小数点后有三位数字。计算任务名称与

    20、任务开始时间、消耗时间之间以一个或多个空格隔开,行首和行尾可能有多余的空格。3.输出输出排序好的日志记录。每个记录的字符串各占一行。输入的格式与输入保持一致,输入包括几个空格,你的输出中也应该包含同样多的空格。4.样例输入样例输入hs_10000_p 2007-01-17 19:22:53,315 253.035(s)hs_10001_p 2007-01-17 19:22:53,315 253.846(s)hs_10002_m 2007-01-17 19:22:53,315 129.574(s)hs_10002_p 2007-01-17 19:22:53,315 262.531(s)hs_10

    21、003_m 2007-01-17 19:22:53,318 126.622(s)hs_10003_p 2007-01-17 19:22:53,318 136.962(s)hs_10005_m 2007-01-17 19:22:53,318 130.487(s)hs_10005_p 2007-01-17 19:22:53,318 253.035(s)hs_10006_m 2007-01-17 19:22:53,318 248.548(s)hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)5.样例输出样例输出hs_10003_m 2007-01-17 19

    22、:22:53,318 126.622(s)hs_10002_m 2007-01-17 19:22:53,315 129.574(s)hs_10005_m 2007-01-17 19:22:53,318 130.487(s)hs_10003_p 2007-01-17 19:22:53,318 136.962(s)hs_10006_m 2007-01-17 19:22:53,318 248.548(s)hs_10000_p 2007-01-17 19:22:53,315 253.035(s)hs_10005_p 2007-01-17 19:22:53,318 253.035(s)hs_10001_

    23、p 2007-01-17 19:22:53,315 253.846(s)hs_10002_p 2007-01-17 19:22:53,315 262.531(s)hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)数圈数圈 1.题目描述题目描述以1为中心,用2,3,。,n的数字围绕着中心输出一个数圈,若n=47 8 9 106 1 2 115 4 3 1216 15 14 132.输入输入一个整数n(1=n=10)3.输出输出一个数圈4.样例输入样例输入55.样例输出样例输出21 22 23 24 2520 7 8 9 1019 6 1 2 1118 5

    24、 4 3 1217 16 15 14 13#include#define N 10int main()int numNN;int circle=2,row,column,n,i=1,j;/circle为每转为每转半圈的数字个数半圈的数字个数 scanf(%d,&n);/*确定开始的那个确定开始的那个1的位置的位置*/if(n%2)row=column=n/2;else row=column=n/2-1;numcolumnrow=i+;numcolumn+row=i+;while(circle=n)j=1;while(j=circle-1)/*当当circle为奇偶数时,行的增减不一样为奇偶数时

    25、,行的增减不一样*/if(circle%2)num-columnrow=i+;else num+columnrow=i+;j+;circle+;j=1;while(j=circle-1)/*同上同上*/if(circle%2)numcolumn-row=i+;else numcolumn+row=i+;j+;for(i=0;in;i+)for(j=0;jn;j+)printf(%3d,numij);printf(n);return 0;细菌繁殖细菌繁殖1.题目描述题目描述一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,。现在给出第

    26、一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。2.输入输入第一行有一个整数n,表示测试数据的数目。其后n行每行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。3.输出输出对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。4.样例输入样例输入21 1 1 1 22 28 10 3 25.样例输出样

    27、例输出240#includeint a12=31,28,31,30,31,30,31,31,30,31,30,31;int main(void)int n,i;scanf(%d,&n);for(i=0;in;i+)有错int month1,day1,sum1,month,day;scanf(%d%d%d%d%d,&month1,&day1,&sum1,&month,&day);int days=0,j,k;for(j=month1;jmonth;j+)days+=aj-1;days+=day;days-=day1;long sum=1;for(k=0;kdays;k+)sum=sum*2;pr

    28、intf(%dn,sum1*sum);return 0;最长最短单词最长最短单词1.题目描述题目描述输入1行单词(不多于200个单词),空格和逗号都是单词间的间隔,试输出第1个最长的单词和第1个最短单词。如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。2.输入输入一行单词,空格和逗号都是单词间的间隔3.输出输出两行输出 第1行,第一个最长的单词 第2行,第一个最短的单词4.样例输入样例输入I am studying Programming language C in Nanjing University of Information and Technology5.样例输出样例输

    29、出ProgrammingI#include#includeint main()char s200;int i=0,j=0,c=0,m=0,n=0,d=10;gets(s);while(si!=0)while(si!=&si!=0)j+;i+;if(jc)m=i-j;c=j;if(jd)n=i-j;d=j;while(si=)i+;j=0;while(sm!=&sm!=0)printf(%c,sm);m+;printf(n);while(sn!=&sn!=0)printf(%c,sn);n+;printf(n);return 0;Caesar 密码密码 1.题目描述题目描述Julius Caes

    30、ar 生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F),其他字符不变,并且消息原文的所有字母都是大写的。密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U2.输入输入最多不超过

    31、100个数据集组成。每个数据集由3部分组成:起始行:START 密码消息:由1到200个字符组成一行,表示Caesar发出的一条消息结束行:END 在最后一个数据集之后,是另一行:ENDOFINPUT3.输出输出4.样例输入样例输入STARTNS BFW,JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJXENDSTARTN BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJENDSTARTIFSLJW PSTBX KZQQ BJQQ YMFY HFJX

    32、FW NX RTWJ IFSLJWTZX YMFS MJENDENDOFINPUT5.样例输出样例输出IN WAR,EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSESI WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROMEDANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE#include#includevoid decipher(char message);void main()cha

    33、r message201;gets(message);while(strcmp(message,START)=0)decipher(message);printf(%sn,message);gets(message);return;void decipher(char message)char plain27=VWXYZABCDEFGHIJKLMNOPQRSTU;char cipherEnd201;int i,cipherLen;gets(message);cipherLen=strlen(message);for(i=0;i=A&messagei=Z)messagei=plainmessag

    34、ei-A;gets(cipherEnd);return;N皇后问题皇后问题 1.题目描述题目描述在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。2.输入输入共有若干行,每行一个正整数N13,表示棋盘和皇后的数量;如果N=0,表示结束。3.输出输出共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。4.样例输入样例输入18505.样例输出样例输出19210大整数加法大整数加法1.题目描述题目描述求两个不超过200位的非负整数的和。2.输入输入有两

    35、行,每行是一个不超过200位的非负整数,没有多余的前导0。3.输出输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。4.样例输入样例输入22222222222222222222333333333333333333335.样例输出样例输出55555555555555555555#include#include#define MAX_LEN 200 是书上的 错误的int an1MAX_LEN+10;int an2MAX_LEN+10;char szLine1MAX_LEN+10;char szLine2MAX_LEN+10;int main()sc

    36、anf(%s,szLine1);scanf(%s,szLine2);int i,j;memset(an1,0,sizeof(an1);memset(an1,0,sizeof(an2);int nLen1=strlen(szLine1);j=0;for(i=nLen1-1;i=0;i-)an1j+=szLine1i-0;int nLen2=strlen(szLine2);j=0;for(i=nLen2-1;i=0;i-)an2j+=szLine2i-0;for(i=0;i=10)an1i-=10;an1i+1+;bool bStartOutput=false;for(i=MAX_LEN;i=0;

    37、i-)if(bStartOutput)printf(%d,an1i);else if(an1i)printf(%d,an1i);bStartOutput=true;return 0;#includeint main()王申豪版int base,num,count=0;int arr10;scanf(%d%d,&base,&num);doarrcount+=num%base;num=num/base;while(num0);count-;for(;count=0;-count)printf(%d,arrcount);printf(n);return 0;第第K个回文数个回文数1.题目描述回文数是

    38、这样一个正整数:它从左往右读和从右往左读是一样的。例如1,111,121,505都是回文数。将1到1000内所有回文数按从小到达排序后,第k个回文数是多少呢?2.输入第一行为一个整数N,表示询问的次数。以下N行每行一个整数k,表示询问第k个回文数是多少3.输出输出共N行,按照输入数据的顺序,依次输出第k个回文数。4.样例输入25105.样例输出511#include#define M 1000 有问题int main(void)int i,j=0,n,m=0,aM;for(i=1;i0)m=m*10+i%10;i=i/10;if(m=n)aj=i;j+;int N,kM;scanf(%d,&N

    39、);for(i=0;iN;i+)scanf(%d,&ki);for(i=0;iN;i+)printf(%d,aki);return 0;计算约数的和计算约数的和 1.题目描述题目描述给你一个数字 求它的所有约数的和。比如12,约数有1,2,3,4,6,12 加起来是28现在给你一个数字I。(1=I=1,000)2.输入输入一个数字I3.输出输出约数之和4.样例输入样例输入125.样例输出样例输出28#includeint main()int i,m,sum;scanf(%d,&m);for(i=1,sum=0;im+1;i+)if(m%i=0)sum+=i;printf(%d,sum);ret

    40、urn 0;判断闰年判断闰年1.题目描述题目描述判断某年是否是闰年。2.输入输入输入只有一行,包含一个整数a(0 a 3000)3.输出输出一行,如果公元a年是闰年输出Y,否则输出N4.样例输入样例输入20065.样例输出样例输出N6.提示提示公历纪年法中,能被4整除的大多是闰年,但能被100整除而不能被400整除的年份不是闰年,能被3200整除的也不是闰年,如1900年是平年,2000年是闰年,3200年不是闰年#include int main()int a;scanf(%d,&a);if(a%4=0&a%100!=0|a%400=0)printf(Y);else printf(N);re

    41、turn 0;求出求出10个数的最大值个数的最大值 1.题目描述题目描述从键盘录入一组10个整型数据,找出值最大的数据,并输出 2.输入输入从键盘输入十个数,数据之间用空格分隔3.输出输出在屏幕上输出结果4.样例输入样例输入12 3 4 65 7 8 9 1 10 205.样例输出样例输出65#includeint main()int a10,i;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;iai+1)ai+1=ai;printf(%d,ai);return 0;整数求和整数求和 1.题目描述题目描述给定两个整数,求它们之和 2.输入输入两个整数A,B.3.输出输

    42、出两个整数的和。4.样例输入样例输入1 25.样例输出样例输出36.提示提示如果对程序答题格式不清楚的,可以查看系统左上角菜单的FAQ,里面有本题的各种语言的样例解答.#include int main()int a,b;scanf(%d%d,&a,&b);printf(%dn,a+b);return 0;求最值求最值 1.题目描述题目描述给定N个整数(1=N=100),求出这N个数中的最大值,最小值。2.输入输入多组数据,第一行为一个整数N,第二行为N个不超过100的正整数,用空格隔开。3.输出输出对每组数据输出一行,包含两个整数,用一个空格隔开,分别表示N个数中的最大值和最小值4.样例输入

    43、样例输入54 6 7 3 144 3 5 15.样例输出样例输出7 15 1#include#define N 100int main()int n,i,max,min;int aN;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);max=a0;min=a0;for(i=1;in;i+)if(maxai)max=ai;elsemin=ai;printf(%dn%d,max,min);return 0;求最小非平凡因子求最小非平凡因子 1.题目描述题目描述给定一个整整数n(2 n 50),求n的最小非平凡因子。2.输入输入输入仅一行,一个正整数n(2 n 50)

    44、。3.输出输出输出仅一行,如果n是素数,输出prime;否则,输出n的最小非平凡因子。4.样例输入样例输入355.样例输出样例输出56.提示提示对于合数n,n一定存在不大于sqrt(n)的素因子;1和n都是n的平凡因子,其他因子称为非平凡因子;最小非平凡因子一定是素数 符号三角形问题符号三角形问题1.题目描述题目描述下图是一个首行有 7 个符号的符号三角形,第一行的排列已经给定。并且2 个同号下面都是“”号,2 个异号下面都是“”号。+-+-+-+-+-+-+-+符号三角形的第一行有n个符号。符号三角形问题要求对于给定第一行符号个数n,计算第一行有多少种“+”“-”组合排列方式,使这个符号三角

    45、形所含的“”和“”的个数相同。2.输入输入符号三角形的第一行符号个数,类型整型(=20)3.输出输出满足题目要求的不同的符号三角型个数,类型整型4.样例输入样例输入35.样例输出样例输出46.提示提示由于算法的时间复杂度比较大O(2n),故建议在测试时n的取值不宜太大。生理周期生理周期1.题目描述题目描述人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道

    46、何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。2.输入输入输入四个整数:p,e,i和d。p,e,i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p,e,或 i。所有给定时间是非负的并且小于365,所求的时间小于21252。3.输出输出从给定时间起,下一次三个

    47、高峰同天的时间(距离给定时间的天数)。#includevoid main()书上的输出有问题int p,e,i,d,j,no=1;scanf(%d%d%d,&p,&e,&i,&d);while(p!=-1&e!=-1&d!=-1)for(j=d+1;j21252;j+)if(j-p)%23=0)break;for(;j21252;j=j+23)if(j-e)%28=0)break;for(;j21252;j=j+23*28)if(j-i)%33=0)break;printf(Case%d,no);printf(:the next triple peak occurs in%d days.n,j

    48、-d);scanf(%d%d%d,&p,&e,&i,&d);no+;数制转换数制转换 1.题目描述题目描述求任意两个不同进制非负整数的转换(2进制16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,.,9,a,b,.,f)或者(0,1,.,9,A,B,.,F)。2.输入输入输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2=a,b=16。3.输出输出输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,.,9,A,B,.,F)。4.样例输入样例输入15

    49、 Aab3 75.样例输出样例输出210306选课选课1.题目描述题目描述教务网站如期的在选课之日出问题了,这次的问题是登陆窗口的验证码无法显示了,同学们只能靠猜验证码来登陆选课。教务的登陆系统刚刚经过改进,改进后的验证码均为1.N的一个排列。一般的同学们在试验的时候都是按照所有排列的字典序逐个试验,但是TN发掘这样试验很乏味,所以他决定每次尝试前一个排列后面的第M个排列。但是一段时间之后他发现,寻找一个排列后面的第M个排列并不是一件容易的事情,所以他希望你帮助他。2.输入输入Line 1:N(1=N=10000)Line 2:M(1=M=100)Line 3:1.N的一个排列3.输出输出所求

    50、的排列4.样例输入样例输入531 2 3 4 55.样例输出样例输出1 2 4 5 3字符串插入字符串插入 1.题目描述题目描述有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的0。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。2.输入输入输入包括若干行,每一行为一组测试数据,格式为str substr3.输出输出对于每一组测试数据,输出插入之后的字符串。4.样例输入样例输入abcab eee12343 5555.样例输出样例输出abceeeab12345553排列排列 1.题目描

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:ACM题库完整版课件.ppt
    链接地址:https://www.163wenku.com/p-5665698.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库