- 题目
- I - 正整数的平方和(芜湖)
- J - 计算两个日期之间的天数(小提示:涉及日期循环 开动开动你的小脑袋瓜 闰年2月29天哦)
- Sample Input
- Sample Output
- K - IP的计算 2(IP地址:没想到吧 我又回来了)
- L - 查成绩(阿巴阿巴 动动你的脑筋)
- M - IP地址(IP地址:哈哈哈哈哈哈 还是我)
- N - 倒杨辉三角(令人头大的一道题)
- O - 奇偶分家(简单题来一道 让脑子休息一下)
- P - 判断素数个数(让脑子开动起来)
- Q - 回文日期(小提示:换个思路 不一定要循环判断每一年)
- R - 聊天字数统计(头大)
- S - 人见人爱A-B(小提示:可以通告数组来计数哦)
- T - 古风排版(动动脑筋)
题目
A - 1+1(不会吧不会吧 不会有人第一题会做错吧)
Description
Input
Output
Sample Input
Sample Output
3Sponsor
B - 温度转换(对你来说应该没啥问题)
利用公式 C = 5 * (F-32) / 9 (其中C表示摄氏温度,F表示华氏温度) 进行计算转化。
Input
输入一行,包含一个实数F,表示华氏温度。(F >= -459.67)
Output
输出一行,包含一个实数,表示对应的摄氏温度,要求精确到小数点后5位。
Sample Input
41
Sample Output
5.00000
C - 获取出生日期(so easy)
输入格式
多实例测试。首先输入一个整数 n
,表示测试实例的个数,然后是 n 行,每行是一个 18
位身份证号。
输出格式
对于输入的每个身份证号,输出一行,即其对应的出生日期,输出格式为:'yyyy-mm-dd'。
提示:scanf()函数中,可用%md指定读取位数。
Sample Input
3
41010619941117865X
410104198202095479
410122197911218097
Sample Output
1994-11-17
1982-02-09
1979-11-21
D - 判断日期是否符合格式(你得开始动动脑子了)
我们知道一年有12个月,每个月最多有31天,年有平年和闰年之分,本题目要求如果输入一个日期,程序需要判断用户输入的日期是否正确。
输入:用户输入是三个数字,分别表示年,月和日。 例如 2007 10 21 ,表示2007年10月21日,这个输入经过判断是正确的。又例如输入 1993 11 38 ,这个输入经过判断是错误的,因为日期不能超过31天。
输出:程序的输出分为两种,1或者0。1表示输入正确,0表示输入错误
提示:测试输入的三个数字中,年份是正数,月份和日期有可能是负数,程序需要对这两个数为负数的情况进行判断
Sample Input
Sample Output
E - 正确的日期格式(动动脑筋)
这个题目要你判断题目给的日期格式是否符合格式。
我们先定义日期的格式:yyyy-mm-dd,就是年-月-日,年份占四位,月份占两位,日占两位,不足的用前导0补齐,年月日之间以”-“分隔。
Input
有多组测试数据,每组测试数据占一行,一行除了换行符外,可能有0个字符或者更多字符,但是不超过255个字符。所给字符都是ASCII码表里可显示的字符。
处理到文件结束。
Output
输出一行,如果日期是正确的格式,则输出Yes,否则输出No。
Sample Input
1991-03-05
0-03-05
199999-333-55555
1991:03:05
Sample Output
Yes
No
No
No
Hint
F - IP的计算(IP地址可一定要会计算啊)
在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。
Input
输入有多个case,每个case有一行,不超过100个字符。
Output
对于每个case,判断输入的IP是否正确,如果正确输入YES,否则NO。
Sample Input
Sample Output
G - 检验身份证(数组yyds!)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7
,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,24
};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
输入格式
输入第一行给出正整数 N(≤100)
是输入的身份证号码的个数。随后 N 行,每行给出 1 个 18
位身份证号码。
输出格式
按照输入的顺序每行输出 1
个有问题的身份证号码。这里并不检验前 17 位是否合理,只检查前 17 位是否全为数字且最后 1
位校验码计算准确。如果所有号码都正常,则输出 "All passed"。
Sample Input
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
Sample Output
12010X198901011234
110108196711301866
37070419881216001X
Sample Input 2
2
320124198808240056
110108196711301862
Sample Output 2
H - 求阶乘的和(小提示:可以用循环也可以用递归)
蒜术师给了一个正整数 n
,让你求出不大于 n 的正整数的阶乘的和(即求 1!+2!+3!+…+n!
)。
输入格式
输出格式
输出一个整数,表示阶乘的和。
Sample Input
5
Sample Output
153
I - 正整数的平方和(芜湖)
给出一个正整数n
,请你求出 12+22+32+…+n_2
的值。结果对1000000007取模。
提示:12+22+…+_n_2=_n(n+1)(2n+1)/6
Input
输入一个正整数n。 Output 输出一个数,表示计算结果对1000000007取模的值。 Sample Input
3
Sample Output
14
J - 计算两个日期之间的天数(小提示:涉及日期循环 开动开动你的小脑袋瓜 闰年2月29天哦)
蒜头君给定两个日期,请计算相差的天数。比如 2010-1-1
和 2010-1-3 相差 2
天。
输入格式
共两行:
第一行包含三个整数 startYear
,startMonth,startDay
,分别是起始年、月、日。
第二行包含三个整数 endYear
,endMonth,endDay
,分别是结束年、月、日。
相邻两个整数之间用单个空格隔开。
年份范围在 1∼3000
。保证日期正确且结束日期不早于起始日期。
输出格式
Sample Input
Sample Output
K - IP的计算 2(IP地址:没想到吧 我又回来了)
不知道你是否注意过你的电脑上下面的网络信息:
“连接状态:
地址类型: 通过DHCP指派
IP地址: 60.176.38.23
子网掩码: 255.255.252.0
默认网关: 60.176.36.1
首选DNS服务器: 210.32.32.1
备用DNS服务器: 210.32.32.10
”
我用最近学习的网络知识,来一一向你解释下(如果有误,恳请指正,谢谢):
1) 一个主机的适配器(网卡)或者一个路由器的适配器与网络的接口的IP地址(IP地址是指接口上的地址)可以由主机用户手工配置,也可以由专用的DHCP服务器来分配,DHCP即动态主机配置协议。
2) IP地址,我想不需要解释了吧?不过需要说明下,IP地址分网络号部分和主机号部分,网络号在前,主机号在后,用可变长的子网划分的方法来标志一个IP地址的话,IP地址可以写成如60.176.36.0/x,其中x表示最开始的x位为网络号部分,后面的32-x位为主机号部分,也就是说,这个子网内部可以分配的IP地址最多有(2^(32-x))-2个(对于主机号全0和全1的IP,具有特殊意义,不能分配给主机)。注意,对于网络管理员来说,他要组建一个网络,必须要申请一定的IP地址空间,但是IP地址空间是有限的,因此不能任意分配(这些IP地址空间需要到特定的ISP去申请),因此必须因地制宜,分配满足需要但是最小的地址空间。
3) 子网掩码的作用就是为了让主机快速的读出一个IP地址中网络号部分,以备快速的定位子网,我们只需要用IP地址与子网掩码进行与操作,就能读出网络号部分,因此可见子网掩码中前x位全部是1,后面全部是0.
4) 默认网关是指一个AS(自治系统)对外部其他的AS进行分组交换的一个路由器,当然也有相应的IP地址。
5) DNS是域名系统,其中最基本的作用就是域名与IP地址之间进行转换,acm.hdu.edu.cn是一个域名,而192.168.100.10是严格格式的IP,而域名可以有多个,如acm.split.hdu.edu.cn也可以指相同的网站,DNS服务器有庞大的分布式数据库,用来保存这些映射关系。
6) 对于一个组建的一个子网,一定会有一台服务器来提供服务,这台服务器必须由管理员设置一个固定IP地址
Hint
请注意,服务器的IP也是子网内的 。
现在你就是一个网络管理员,你需要组建一个局域网络,已知该网络中某时刻最大可能连接入网的主机个数(不同时刻,连接入网的主机数量在不断变化),问如果对于一台特定的主机,该如何设定其子网掩码,才能让主机获得该子网的正确的网络号部分。
Input
输入有多个case,每个case有一个正整数字(0
Sample Input
Sample Output
L - 查成绩(阿巴阿巴 动动你的脑筋)
小明的班级一用有n个学生,有语文,数学,英语三门课,每个学生都有三个成绩,现在小明给出了三个区间a,b
,c,d,e,f
,小明想知道三门课成绩都在区间内的学生都有谁,聪明的你可以帮助小明解决这个问题吗?
Input
第 1 行:一个数字n(n<=10000),表示这个班级一个n个学生。 第 2~n+1 行:每行一个字符串和三个数字,分别代表这个学生的名字和他三门课的成绩; 第 n+2 行:包含一个数字k(k<=10),表示询问的次数 第 n+3 ~ n+2+k 行,每行6个数字,分别代表询问语文成绩的区间,数学成绩的区间,英语成绩的区间。 保证成绩小于等于100。
Output
对于每个询问,按照输入顺序输出成绩同时满足三个区间的所有学生的名字,每个学生的名字占一行。
Sample Input
2
Alice 50 50 50
Bob 100 34 50
1
1 60 1 60 1 60
Sample Output
M - IP地址(IP地址:哈哈哈哈哈哈 还是我)
在数据库中存IP的话,比如192.168.1.1需要11位,但是把它逐段弄成十六进制放在一起的话就是C0A80101,只要八位了。
这样一来就可以减少数据库所占用的空间了。
Input
本题有多组数据,以EOF结尾。 <br />每组数据一行,为一个合法的IP地址(四个不超过255的数字,三个点)
Output
对于每组数据输出一行,为其十六进制字符串,字母大写。
Sample Input
192.168.0.1
Sample Output
C0A80001
N - 倒杨辉三角(令人头大的一道题)
蒜头君喜欢图形,而且喜欢把图形倒过来欣赏。有一次,他看见杨辉三角形,觉得很新鲜。杨辉三角是如下三角形。
可以发现杨辉三角的每个位置的值是左上角的值加上右上角的值。
现在蒜头君选择前面 n
行,然后把图形倒过来。但是蒜头君是手工画的,你却可以用编程更快捷地做出来,多爽啊!
输入格式
输出格式
输出 n
行倒的杨辉三角(每一行相邻的数之间用一个空格隔开)。
Sample Input
Sample Output
O - 奇偶分家(简单题来一道 让脑子休息一下)
输入格式
输入第一行给出一个正整 N(N≤1000)
;第 2 行给出 N
个正整数,以空格分隔。
输出格式
在一行中先后输出奇数的个数、偶数的个数。中间以 1
个空格分隔。
Sample Input
Sample Output
3 6
P - 判断素数个数(让脑子开动起来)
Input
Output
Sample Input
Sample Output
25
Q - 回文日期(小提示:换个思路 不一定要循环判断每一年)
在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用 8
位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2
位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8
位数字是回文的。现 在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个真实存在的日期是回文的。
一个 8
位数字是回文的,当且仅当对于所有的i ( 1≤i≤8 )从左向右数的第 i 个 数字和第 9−i 个数字(即从右向左数的第 i
个数字)是相同的。
例如:
对于 2016
年 11 月 19 日,用 8 位数字 20161119
表示,它不是回文的。
对于 2010
年 1 月 2 日,用 8 位数字 20100102
表示,它是回文的。
对于 2010
年 10 月 2 日,用 8 位数字 20101002
表示,它不是回文的。
每一年中都有 12
个月份:
其中,1
、3、5、7、8、10、12 月每个月有 31 天;4、6、9、11 月每个月有 30 天;而对于 2 月,闰年时有 29 天,平年时有 28
天。
一个年份是闰年当且仅当它满足下列两种情况其中的一种:
这个年份是 4
的整数倍,但不是 100
的整数倍;
这个年份是 400
的整数倍。
例如:
以下几个年份都是闰年:2000
、2012、2016
。
以下几个年份是平年:1900
、2011、2014
。
输入格式
输入包括两行,每行包括一个 8
位数字。
第一行表示牛牛指定的起始日期。
第二行表示牛牛指定的终止日期。
保证 datei
和都是真实存在的日期,且年份部分一定为 4 位数字,且首位数字不为 0
。
保证 date1
—定不晚于 date2
。
输出格式
输出一行,包含一个整数,表示在 date1
和 date2
之间,有多少个日期是回文的。
数据范围
对于 60%
的数据,满足 date1=date2
。
样例解释
样例1:
符合条件的日期是 20111102
。
样例2:
符合条件的日期是 20011002
和 20100102
。
Sample Input
2011010120111231
Sample Output
1
Sample Input 2
2000010120101231
Sample Output 2
2
R - 聊天字数统计(头大)
有一群聊天记录,现在需要你统计每个人的聊天内容里有多少字符。
聊天人名仅包含大小写字母,然后是一个冒号,然后空一格,接下去是这个人聊天的内容。每个人每次聊天内容仅一行,所以不会出现多个回车。聊天内容为大小写字母、数字以及标点符号(,.-_+=”‘|)和空格。
Input
本题有多组数据。 <br />每组数据有未标量个聊天记录。每个聊天记录格式如问题描述所述,聊天人名长度不超过20。 <br />每个聊天记录一行。 <br />在每组数据末尾有一行“分隔符”,如下: <br />---------- <br />(10个-)
Output
对于每组数据,聊天人名按字典序排序,对于每个聊天人输出其聊天总的字符数。一个人一行,每行聊天内容不超过10000。 <br />每组数据末尾包含一行“分隔符”。
Sample Input
aaa: Hi!
bbb: d**n it!
aaa: lol~
—————
Sample Output
aaa: 7
bbb: 8
—————
S - 人见人爱A-B(小提示:可以通告数组来计数哦)
参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下)
Input
每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开.
如果n=0并且m=0表示输入的结束,不做处理。
Output
针对每组数据输出一行数据,表示A-B的结果,如果结果为空集合,则输出“NULL”,否则从小到大输出结果,为了简化问题,每个元素后面跟一个空格.
Sample Input
3 3 1 2 3 1 4 7
3 7 2 5 8 2 3 4 5 6 7 8
0 0
Sample Output
2 3
NULL
T - 古风排版(动动脑筋)
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式
输入在第一行给出一个正整数 N
,是每一列的字符数。第二行给出一个长度不超过 1000
的非空字符串,以回车结束。
输出格式
按古风格式排版给定的字符串,每列 N
个字符(除了最后一列可能不足 N
个)。
数据范围
Sample Input
Sample Output
asa T
st ih
e tsi
ce s
2021.7.25第二次测试-补题.pdf
