ACM题库完整版ppt课件.ppt
《ACM题库完整版ppt课件.ppt》由会员分享,可在线阅读,更多相关《ACM题库完整版ppt课件.ppt(45页珍藏版)》请在三一办公上搜索。
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.
2、样例输出110,#includeint fib(int n,int k)if(n=1,构造新的模运算1.题目描述给定整数a,b,n,要求计算(ab)mod n 2.输入多组数据,每组数据一行,为三个用空格隔开的整数a,b,n1=a=40,0=b=3,1=n=5003.输出每组数据输出一行,为所求值4.样例输入2 3 52 2 45.样例输出30,#include#includeint main() 答案有错int a,b,n;while(scanf(%d%d%dn,计算绩点1.题目描述学校对本科生的成绩施行平均学分绩点制(GPA)。将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
3、 曾经使用的规定如下: 实际成绩 绩点 90-100 4.0 85-89 3.7 82-84 3.3 78-81 3.0 75-77 2.7 72-74 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(%.2
4、f,GPA);)5.样例输入54 3 4 2 391 88 72 69 566.样例输出2.52,#include#includeint main() int n,i; float a10,c10,b10,sum=0,GPA,d; scanf(%d,将字符串中的小写字母转换成大写字母1.题目描述给定一个字符串,将其中所有的小写字母转换成大写字母 2.输入一个字符串3.输出将输入的字符串中所有小写字母转换成大写字母后的字符串4.样例输入helloworld123Ha5.样例输出HELLOWORLD123HA,#include#define N 100int main() int i;char c
5、,strN; gets(str);i=0;while(stri!=0)if(stri=a,日历问题 1.题目描述在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。2.输入输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是?1, 不必处理。可以假设结果的年份不会超过9999。3.输出对每个测试样
6、例,输出一行,该行包含对应的日期和星期几。格式为“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 week7
7、10=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,求平均年龄1.题目描述班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位2.输入第一行有一个整数n(1= n =
8、100),表示学生的人数。其后n行每行有1个整数,取值为15到25。3.输出输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。4.样例输入218175.样例输出17.506.提示要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式: printf(%.2f, num);,#includeint main() int n,i,sum,age; double num; scanf(%d,数制转换1.题目描述将十进制数转换成指定的进制数 2.输入第一行输入一个正整数n,表示需要转换的进制数第二行输入一个十进制正整数3.输出转换成n进制的数4.样例输入6905.样例输出230,
9、数的距离差 1.题目描述给定一组正整数,其中的最大值和最小值分别为max和min,其中的一个数x到max和min的距离差D定义为 abs(abs(x-max) - abs(x-min)。 其中,abs()表示求一个数的绝对值2.输入输入第一行为整数n,剩余n行每行一个正整数。3.输出输出仅一行,它的值为使得距离差D最小的x4.样例输入5317595.样例输出56.提示函数abs()定义在stdlib.h中,#include#include#define N 500int main()int aN,n,i,m,p,r,s,t;scanf(%d,登山1.题目描述五一到了,NUIST-ACM队组织大
10、家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?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);
11、int main()int n,a1000,i,m;scanf(%d,int f(int a1000,int n)int i,j=1,s,m,b1000;for(m=n;m0;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位。
12、4.样例输入2.31 1.2 2 2 35.样例输出33.08386926.提示使用printf(%.7lf, .)实现保留小数点后7位。,#includeint main()double x,a,b,c,d,y;scanf(%lf%lf%lf%lf%lf,计算两个分数的和 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,排序 1.题目描述按要求排序2.输入第
13、一行为一个整数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 1000int main(void)int n,i,j,temp,aN;scanf(%d,日志排序 1.题目描述有一个网络日志,记录了网络中计算任务的执行情况,每个计算任务对应一条如下形式的日志记录:“hs_10000_p”是计算任务的名称,“2007-01-17 19:22:53,315”是计算
14、任务开始执行的时间“年-月-日 时:分:秒,毫秒”, “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,消耗时间小
15、数点后有三位数字。计算任务名称与任务开始时间、消耗时间之间以一个或多个空格隔开,行首和行尾可能有多余的空格。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.5
16、31(s)hs_10003_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、-17 19: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_
18、10001_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 4 3 1217 1
19、6 15 14 13,#include#define N 10int main() int numNN; int circle=2,row,column,n,i=1,j;/circle为每转半圈的数字个数 scanf(%d, ,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.题目描述一种细菌的繁殖速度
20、是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。 2.输入第一行有一个整数n,表示测试数据的数目。其后n行每行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。3.输出对于每一组测试数据,输出一行,该行包含一个整数
21、,为要求的一天的细菌数。4.样例输入21 1 1 1 22 28 10 3 25.样例输出240,#includeint a12=31,28,31,30,31,30,31,31,30,31,30,31;int main(void)int n,i;scanf(%d,最长最短单词1.题目描述输入1行单词(不多于200个单词),空格和逗号都是单词间的间隔,试输出第1个最长的单词和第1个最短单词。如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。2.输入一行单词,空格和逗号都是单词间的间隔3.输出两行输出 第1行,第一个最长的单词 第2行,第一个最短的单词4.样例输入I am studyi
22、ng Programming language C in Nanjing University of Information and Technology5.样例输出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!= ,while(sm!= ,Caesar 密码 1.题目描述Julius Caesar 生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是Caesar 军团中的一名军官,需要把Cae
23、sar 发送的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第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.输入最多不超过100个数据集组成。每个数据集由3部分组成:起始行:START 密码消息:由1到200个字符组成一行,表示Caesar发出的一条消息结束
24、行: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 HFJXFW NX RTWJ IFSLJWTZX YMFS MJENDENDOFINPUT5.样例输出IN WAR, EVENTS OF IMPORTAN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ACM 题库 完整版 ppt 课件

链接地址:https://www.31ppt.com/p-2008046.html