![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NENU算法课
Chen11_Nenu
11努力努力再努力
展开
-
Nenu算法复习第六章
对于日期的常用格式,在中国常采用格式的是“年年年年/月月/日日”或写为英语缩略表示的”yyyy/mm/dd”,此次编程大赛的启动日期“2009/11/07”就是符合这种格式的一个日期,而北美所用的日期格式则为“月月/日日/年年年年”或”mm/dd/yyyy”,如将“2009/11/07”改成这种格式,对应的则是”11/07/2009”。对于给定的采用”yyyy/mm/dd”加24小时制(用短横线”-”连接)来表示日期和时间的字符串,请编程实现将其转换成”mm/dd/yyyy”加12小时制格式的字符串。原创 2023-06-11 13:41:25 · 968 阅读 · 0 评论 -
Nenu算法复习第五章
则有 11(3) * 11(3) = 121(3) 因为 11(3) = 1 * 31 + 1 * 30 = 4(10) 和 121(3) = 1 * 32 + 2 * 31 + 1 * 30 = 16(10)。Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,啊哈,真是巧啊。原创 2023-06-08 11:16:19 · 881 阅读 · 0 评论 -
Nenu算法模拟测试
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有3个整数a1,a2,a3。已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3的倍数, a1 + a2 + a3是5的倍数。每组占一行,为3个正整数n,u,d,其中n是井的深度,u是小青蛇每分钟上爬的距离,d是小青蛇在休息的过程中下滑的距离。对输入文件中的每组测试数据,输出一个整数,表示小青蛇爬出井所需要的时间(分钟,不足1分钟按1分钟计算)。原创 2023-06-03 22:48:07 · 1598 阅读 · 7 评论 -
Nenu算法复习第四章
余下的每行是一个电话号码。然后是一个空行,紧接着是M组测试数据,每组测试数据开始是一个正整数N,再是N行测试数据,包含若干个单词,单词之间用一个空格隔开,每个单词仅由大小写字母字符组成。字母A,E,I,0,U,H,W和Y在Soundex中不用编码的,可以直接忽略。第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串,每组测试数据之间有一个空行,每行数据不超过1000个字符且非空。更糟糕的是,光标键坏了,因此他只能用退格键回到出错的地方,纠正以后,原来正确字符还得重新输入。原创 2023-06-03 09:44:28 · 737 阅读 · 0 评论 -
Nenu算法复习第三章
作为HDU最好的程序员之一的你,只要你能解决一个非常简单的简单的不能再简单的题目,你就会得到一个漂亮的气球。给你一个运算符(+、-、* 、/,表示加、减、乘、除)和两个正整数,你的任务就是求出它们的运算结果,简单吧,来吧。比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。输出一行,为要求的平均年龄,如果为整数,则直接输出该整数,如果为小数,则保留到小数点后1位。班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,按要求输出结果。原创 2023-06-02 17:15:12 · 654 阅读 · 0 评论 -
Nenu算法模拟测试
测试数据有多组,每组首先是一个正整数n(0 < n < 31),接下来是n行数据,每行数据代表一个学生的成绩,分部为学生的姓名、学号、成绩。其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。有多组测试用例,每组第一行是正整数N(0 < N < 201),然后是N行数据,每行表示一个学生的学号和成绩,中间空格隔开。每组输入给出判断,如果日期有效,则先输出该日期,然后输出true,无效则输出false,中间一个空格隔开。原创 2023-05-29 12:52:19 · 1382 阅读 · 0 评论 -
1201:8003 撬锁者
你选择其中的五个英文字母V,W,X,Y和Z要求满足以下方程,用每个字母在字母表中的顺序位置(A = 1,B = 2 ,...,Z = 26)来代替,如果有一个以上的解决方案,则选字典序中最大的,即在字典中的最后一个会出现。例如,给定的目标1和字母集ABCDEFGHIJKL,一个可能的解决方案是FIECB,因为6 - 92 + 53 - 34 + 25 = 1,在这种情况下,实际上有几个解决方案,最终应该是LKEBA。===高科技指令,电脑事业部,2002年11月2日12:30 CST ===原创 2023-05-26 13:42:12 · 143 阅读 · 2 评论 -
1194: 7208 遍历迷宫
每个测试数据的第一行是两个整数:M和N,表示迷宫的大小,其中M表示迷宫的行数,N表示迷宫的列数,这两个整数的大小都不超过60。对每个测试数据,输出机器人最终的位置和朝向(N,W,S或E),表示位置的行和列的整数及表示朝向的字符用空格隔开。测试数据中剩余的数据表示机器人接收到的命令,用字符表示,其中可能包含空格。迷宫导航是人工智能领域一个常见的问题,迷宫中有走廊和墙壁,机器人可以通过走廊,但不能穿过墙壁。每个测试数据中指令序列的最后一个字符为Q,此时应输出机器人当前位置和朝向。初始时,机器人是朝北的。原创 2023-05-23 19:16:55 · 563 阅读 · 0 评论 -
1213: 8104 完美立方
a3 = b3 + c3 + d3 为完美立方等式。例如123 = 63 + 83 + 103。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d) ,使得a3 = b3 + c3 + d3,其中1 < a, b, c, d ≤ N。每行输出一个完美立方,按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则依次按照b、c、d进行非降升序排列输出,即b值小的先输出、然后c值小的先输出、然后d值小的先输出。正整数N (N≤100)。原创 2023-05-22 13:00:40 · 169 阅读 · 0 评论 -
1211: 8102 开关
输入文件中有多组测试数据,每行一组。首先是一个整数N(1<=N<=10000)表示灯的个数。然后是N个整数,表示这N盏灯的状态(1表示打开,0表示关闭)。测试数据直到文件尾。事先给定每盏灯的初始状态(开着或关着),你的任务是计算出至少要切换多少盏灯的状态(把开着的关掉,或把关着的打开),使得这N盏灯交替地打开和关闭。对每组测试数据输出一个至少需要切换的灯的数目,占一行。原创 2023-05-22 12:57:34 · 178 阅读 · 0 评论 -
1210: 8101 数字方格
如图8.1所示,有3个方格,每个方格里面都有一个整数a1,a2,a3。已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3的倍数, a1 + a2 + a3是5的倍数。你的任务是找到一组a1,a2,a3,使得a1 + a2 + a3最大。输入的第一行是一个数t,表示测试数据的数目。接下来的t行,每行给出一个n (0 <= n <= 100)的值。对于每一个n的值,输出a1 + a2 + a3的最大值。原创 2023-05-22 12:57:29 · 167 阅读 · 0 评论 -
1182: 7104 约瑟夫问题
约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。每行是用空格分开的两个整数,第一个是 n,第二个是m ( 0 < m, n < 300)。最后一行是:0 0。对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号。原创 2023-05-15 10:32:52 · 116 阅读 · 1 评论 -
1181: 7103 数根
比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。输入包括一些正整数n( n原创 2023-05-15 10:30:51 · 119 阅读 · 0 评论 -
1180: 7102 爬动的蠕虫
一只1英才长的蠕虫在一口深n英寸的井底。它有足够的力气完成每分钟向上爬u英寸,但必须休息1分钟才能继续爬。在休息的过程中,蠕虫又下滑了d英寸。在此,不足一分钟按一分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。每组占一行,为3个正整数n,u,d,其中n是井的深度,u是蠕虫每分钟上爬的距离,d是蠕虫在休息的过程中下滑的距离。假定d< u,n < 100。对输入文件中的每组测试数据,输出一个整数,表示蠕虫爬出井所需要的时间(分钟,不足1分钟按1分钟计算)。原创 2023-05-15 10:27:52 · 268 阅读 · 0 评论 -
1179: 7101 最简单的计算机
PpMm只能执行简单的六种命令A,B,C,D,E,F;有若干组,每组有2行,第一行是2个整数,分别表示M1和M2中的初始内容;第二行是一串长度不超过200的由大写字母A到F组成的命令串,命令串的含义如上所述。对应每一组的输入,输出只有一行,二个整数,分别表示M1,M2的内容;其他说明:R1,R2,R3的初始值为0,所有中间结果都在-231和231之间。命令E:将寄存器R1中的数据和寄存器R2中的数据相加,结果放到寄存器R3中;命令F:将寄存器R1中的数据和寄存器R2中的数据相减,结果放到寄存器R3中。原创 2023-05-15 10:27:32 · 133 阅读 · 0 评论 -
1020: 1020 最高分和最低分
已知某个班有n(1原创 2023-05-05 23:24:40 · 207 阅读 · 0 评论 -
1188: 7202 排列
第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 …给出正整数n,则1~n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1 这6个排列。比如:n = 3,k=2给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1 ,因此答案为3 2 1。原创 2023-05-05 16:21:27 · 100 阅读 · 0 评论 -
1228: 9002 Niven数
Niven数的定义是这样的:如果一个数字能被它的各位数字之和整除,那么这个数就是Niven数。我们也可以在其他进制b下来定义Niven数:如果一个b进制下的数能被它的各位数之和整除,那么它就是b进制下的Niven数。第一行是个整数N,然后是N个输入块(每个输入块之间可能包括多组测试数据),之后是个空行。给定b(2 <= b <= 10)和一个b进制下的数,判断该数是不是Niven数。对于每个测试,如果该数是Niven数则输出“yes”,否则输出"no"。输出N个输出块,每个输出块之间要输出个空行。原创 2023-05-05 11:20:27 · 116 阅读 · 0 评论 -
1090: 3006 奖学金计算
输入的第一行是一个整数N(1 <= N <= 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。发表的论文数是0到10的整数(包括0和10)。输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。某校的惯例是在每学期的期末考试之后发放奖学金。原创 2023-05-04 12:29:08 · 126 阅读 · 0 评论 -
1092: 3008 前m大的数
给定一个包含N(N <= 3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M <= 1000)并按从大到小的顺序排列。小周想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小周只想让你把答案中最大的M个数告诉她就可以了。对于输入的每组数据,输出M个数,表示结果。输出应当按照从大到小的顺序排列。第二行N个数,表示该序列。第一行两个数N和M,原创 2023-05-04 11:59:25 · 135 阅读 · 0 评论 -
1094: 3010 肿瘤检测
一张CT扫描的灰度图像可以用一个N * N(0 < N < 100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0~255。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。原创 2023-05-04 12:00:06 · 136 阅读 · 0 评论 -
1170: 6202特殊日历计算
有一种特殊的日历法,它的一天和我们现在用的日历法的一天是一样长的。它每天有10个小时,每个小时有100分钟,每分钟有100秒。现在要你编写一个程序,将我们常用的日历法的日期转换成这种特殊的日历表示法。这种日历法的时、分、秒是从0开始计数的。日、月从1开始计数,年从0开始计数。假设 0:0:0 1.1.2000 等同于特殊日历法的 0:0:0 1.1.0。每组输入要求输出一行。格式如下:mhour:mmin:msec mday.mmonth.myear 是输入日期的特殊日历表示方法。补充:计算总天数的办法。原创 2023-04-23 16:02:21 · 211 阅读 · 0 评论 -
1171: 6203 时区转换
直到19世纪,时间校准是一个纯粹的地方现象。今天各个国家使用的是一个Fleming时区规范的一个变种,中国一共跨越了5个时区,但是使用了一个统一的时间规范,比Coordinated Universal Time(UTC,格林威制时间)早8个小时。在1878年,加拿大人Sir Sanford Fleming提议使用一个全球的时区(这个建议被采纳,并衍生了今天我们所使用的全球时区的概念),他建议把世界分成24个时区,每一个跨越15度经线(因为地球的经度360度,划分成24块后,一块为15度)。原创 2023-04-23 13:36:20 · 651 阅读 · 0 评论 -
1166: 6102玛雅历法
注意:一年中的每一天都有着明确的描述,比如,在一年的开始,日期如下描述:1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, ,8 imix, 9 ik, 10 akbal,. . .。表示,数字0表示世界的开始。原创 2023-04-23 12:54:20 · 482 阅读 · 0 评论 -
1168: 6112不吉利的日期
在国外,每月的13号和每周的星期5都是不吉利的。特别是当13号那天恰好是星期5时,更不吉利。已知某年的一月一日是星期w,并且这一年一定不是闰年,求出这一年所有13号那天是星期5的月份,按从小到大的顺序输出月份数字(w=1~7)。输入有多行,每个样例占一行,即一月一日星期几(w)。每个输入对应的输出有一到多行,每行一个月份,表示该月的13日是星期五。原创 2023-04-23 12:44:18 · 190 阅读 · 0 评论 -
1167: 6111细菌繁殖
第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在整数范围内。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。原创 2023-04-23 12:24:02 · 96 阅读 · 0 评论 -
1165: 6101 判断闰年
判断某年是否是闰年。公历纪年法中,能被4 整除的大多是闰年,但能被100 整除而不能被400 整除的年份不是闰年,如1900 年是平年,2000 年是闰年。输入数据有多组,每组仅含一个整数a(0 < a < 3000)。要求每组输出一行,如果公元a 年是闰年输出Y,否则输出N。原创 2023-04-23 12:22:15 · 164 阅读 · 0 评论 -
1087: 3003 折半处理
对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3 * n + 1后砍掉一半,直到该数变为1为止。包含多个测试数据,每个测试数据包含一个整数n,当n为0 时表示输入结束。对于每组测试数据请输出一个数,表示需要经过的步数,每组输出占一行。请计算需要经过几步才能将n变到1,具体可见样例。原创 2023-04-19 12:29:50 · 70 阅读 · 0 评论 -
1021: 1021 按位输出
输入文件中每行为一个正整数n。把整数n按位输出,从低到高。把正整数按位进行输出。原创 2023-04-18 23:24:23 · 149 阅读 · 0 评论 -
1077: CJ001 闰年
经常会有人问你怎么判断闰年,其实很简单,就是如果年份能被4整除但是不能被100整除,或者是能被400整除,那么就是闰年,否则就不是。输入一个正整数year(1 <=year <=3000)。如果是闰年,输出YES,否则输出NO。原创 2023-04-18 22:47:16 · 107 阅读 · 0 评论 -
1196: 7210 计算指数
输出由上面公式在不同的n的取值下产生的e的近似值。输出的前面部分参照下面的格式。其中n可以是无限大的数。实际上仅使用较小的n就能产生非常精确的e的近似值。输入有多组,每组为一个正整数n(0 <= n <= 9)。原创 2023-04-13 21:15:17 · 425 阅读 · 0 评论 -
1129: 4114 单词逆序
第1行为一个整数M,表示测试数据的组数。然后是一个空行,紧接着是M组测试数据,每组测试数据开始是一个正整数N,再是N行测试数据,包含若干个单词,单词之间用一个空格隔开,每个单词仅由大小写字母字符组成。这个问题包括多组测试数据。第1行是一个整数M,紧接着是一个空行,然后是M组测试数据,每组数据之间有一个空行。要求输出M个输出块。每个输出块之间有一个空行。对于每个单词,在不改变这些单词之间的顺序下,逆序输出每个单词。对每组数据中的每个测试数据,输出一行。原创 2023-04-13 15:15:18 · 219 阅读 · 0 评论 -
1199: 8001 颜色映射
颜色缩减就是把一组离散的颜色映射到一个较小范围的颜色上。为此,我们把一个RGB颜色定义为一个有序的三元组(R,G,B),其中每个值都是从0到255的整数。即给定的两种颜色(R1,G1,B1),(R2,G2,B2),它们的距离D由下式给出: D=sqrt((R2-R1) * (R2-R1)+(G2-G1) * (G2-G1)+(B2-B1) * (B2-B1))输入包括多个RGB颜色,每个颜色占一行,包括3个从0到255的整数,空格隔开。如果有多个相同的最小距离,输出集合中最先出现的那个。原创 2023-04-12 23:32:29 · 116 阅读 · 0 评论 -
1218: 8201 哥德巴赫猜想之二
然而,对于一个给定的偶数,我们可以去找这样的素数对。本题的任务是编写一个程序,实现:对于一个给定的偶数,输出满足条件的素数对的个数。输入文件包含多个测试数据,每个测试数据占一行,为一个整数,并且假设这个整数是偶数,且大于等于4,小于215。哥德巴赫猜想:对任何一个不小于4的偶数,总可以分解成一个素数对之和,即:n=p1+p2,其中p1和p2都是素数。注意:在本题中,对2个素数p1和p2,(p1,p2)和(p2,p1)是同一个素数对。对输入文件中的每个偶数(除最后的0外),输出满足条件的素数对的个数。原创 2023-04-12 16:57:50 · 169 阅读 · 0 评论 -
1202: 8004 一个数学好奇号
给定两个整数n和m,统计这样的整数对的个数(a,b),满足0 < a < b < n 并且 (a2+b2 +m)/(a * b) 也是整数。第一行是个整数N,然后是一个空行,接下来是N组输入数据块,每个数据块之间有一个空行隔开。每个数据块中有多个输入数据,包括两个整数,空格隔开。对于每组测试数据,要求输出当前组内测试数据的序号以及满足条件的整数对的个数,每组占一行。组与组之间用空行隔开。给定你输入数据的块数,每个测试数据包括两个整数n和m,n=m=0表示输入结束,假定0 < n <= 100。原创 2023-04-12 14:42:01 · 100 阅读 · 0 评论 -
1198: 7212 欧几里得的游戏
两个玩家,Stan和Ollie。Stan为第一个玩家,他可以从大数中减去小数的任意倍数(得到的结果要大于0)。Ollie为第二个玩家,重复第一个玩家的玩法。然后循环该玩法,直到其中一个玩家减之后得到0,他就是赢家。输入有多组数据,每组数据有两个正整数。“0 0”表示输入结束。游戏总是从Stan开始。如果Stan赢了,则输出“Stan win”,否则输出“Ollie win”。原创 2023-04-12 12:54:51 · 223 阅读 · 0 评论 -
1089: 3005 小明的A+B
输入数据的第一行为一个正整数T,表示测试数据的组数。然后是T组测试数据,每组测试数据包含两个非负整数A和B(A和B均在int型可表示的范围内)。对于大于等于100的整数,小明仅保留该数的最后两位进行计算,如果计算结果大于等于100,那么小明也仅保留计算结果的最后两位。小明今年3岁了,现在他已经能够认识100以内的非负整数,并且能够进行100以内的非负整数的加法计算;给定非负整数A和B,你的任务是代表小明计算出A+B的值。对于每组测试数据,输出小明A+B的结果。写完发现自己写麻烦了 当练手了。原创 2023-04-12 11:47:47 · 74 阅读 · 0 评论 -
1169: 6201日历问题
对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必须是下面中的一个: “Sunday”, “Monday”, “Tuesday”, “Wednesday”,“Thursday”,“Friday”和 “Saturday”。在我们现在使用的日历中, 闰年被定义为能被4 整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。原创 2023-04-10 10:45:48 · 180 阅读 · 0 评论 -
1153: 5112确定进制
即, 6(13) * 9(13) = 42(13), 而 42(13) = 4 * 131 + 2* 130 = 54(10)。你的任务是写一段程序读入三个整数p、q和r,然后确定一个进制B(2 <= B <= 16) 使得 p * q = r。例如:p = 11,q = 11,r = 121。则有 11(3) * 11(3) = 121(3) 因为 11(3) = 1 * 31 + 1 * 30 = 4(10) 和 121(3) = 1 * 32 + 2 * 31 + 1 * 30 = 16(10)。原创 2023-04-08 18:29:33 · 156 阅读 · 0 评论 -
1152: 5111八进制转换十进制
输入有多行,每行仅含一个八进制表示的正整数a,a的十进制表示的范围是(0 < a < 65536)。把一个八进制正整数转化成十进制。一行,a的十进制表示。原创 2023-04-08 17:49:44 · 306 阅读 · 0 评论