习题十三"/>
Python习题十三
1、最大的偶数Easy
题目描述
本题目要求在给定的N个正整数A1,A2,…,AN中找到它们中最大的偶数
,若数组中没有偶数,请返回-1
。
约束:
- 1≤N≤100
- 1≤Ai≤100
- 所有的数值都是整数
函数接口定义:
def Max_Even_Number(N, nums):
其中N为数的个数,nums为数字列表,返回值为一个整数
裁判测试程序样例:
#你的答案将会被填写在这里n = int(input())
li = list(map(int,input().split()))
print(Max_Even_Number(n, li))
样例输入1:
4
1 2 3 4
样例输出1:
4
你应该获取了四个整数 1、2 、 3、4,其中偶数有2、4
答案是 4
样例输入2:
3
1 3 5
样例输出2:
-1
你应该获取了三个整数 1、 3、5,没有偶数
答案是 -1
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
def Max_Even_Number(N,nums):maxeven=-1for n in nums:if n %2 ==0:if n >maxeven:maxeven=nreturn maxeven
2、判断整数的各位数字是否互不相同
编写一个函数 isdif(n),用来判断参数n(n为正整数)的各位数字是否互不相同,若互不相同,则返回1,否则返回0。在主程序中调用该函数,输出结果。
函数接口定义:
在这里描述函数接口。例如:
def isdif(n):
函数的参数n是一个正整数,函数要返回1或者0。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
/* 请在这里填写答案 */
n=int(input())
if isdif(n):print("{}的各位数字互不相同".format(n))
else:print("{}的各位数字不是互不相同".format(n))
输入样例:
在这里给出第一组输入。例如:
12345
在这里给出第二组输入。例如:
13345
输出样例:
在这里给出第一组输出。例如:
12345的各位数字互不相同
在这里给出第二组输出。例如:
13345的各位数字不是互不相同
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
def isdif(n):a=str(n)b=''for i in a:if i not in b:b+=ielse:continueif a==b:return 1else:return 0
3、整数求和
题目描述
本题目要求读入正整数N,以及N个正整数A1,A2,…,AN,然后输出它们的和。
约束:
- 1≤N≤100
- 1≤Ai≤100
- 所有的数值都是整数
输入:
N
A1 A2 … AN
输出:
按照题目的要求输出答案
样例输入:
3
1 2 3
样例输出:
6
你应该读入了三个整数 1、2 和 3
答案是 1 + 2 + 3 = 6
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
st=int(input())
n=list(map(int,input().split()))
if 1<=st<=100 and st==len(n):q=0for i in n:if 1<=i<=100:q+=ielse:break
print(q)
4、IPv4地址
题目描述
本题目要求给定由4个1字节串S1,S2,S3,S4构成的IPv4地址转换成点分十进制
表示
约束:
- 保证输入符合IPv4 IP地址规范
- Si以字符
.
分割
输入:
S1. S2. S3. S4
输出:
按照题目的要求输出答案
样例输入1:
11000000.10101000.00000001.00000001
样例输出1:
192.168.1.1
样例输入2:
01111111.00000000.00000000.00000001
样例输出2:
127.0.0.1
知识补充:
- IPv4使用32位2进制位4字节的地址,大约只有43亿个地址
- IPv4地址通常采用
点分十进制
表示 - 计算机的IP地址由两部分组成,一部分为网络位,一部分为主机位,同一网段内的计算机网络部分相同,主机部分不同同时重复出现。路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP地址不会互相重叠,即IP地址具有了唯一性。
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
list0=[128,64,32,16,8,4,2,1]
l1=list(map(str,input().split(".")))
s=""
for i in l1:a=0for j in range(8):a+=int(i[j])*list0[j]s+=str(a)s+="."
print(s[:-1])
5、红绿色盲
题目描述
小明是一个红绿色盲,现在有两条色带S1,S2,色带由N个涂有红色R
、绿色G
或者蓝色B
的小格子组成
- 红绿色盲是伴X染色体隐性遗传病,患者不能区分红色和绿色,即小明会认为
R
和G
为同一种颜色
现在一共有T
组色带,对于每一组色带,请你判断小明是否会将两条色带认定为同一条
约束:
- 2≤T≤10
- 1≤len(Si)≤100
- Si 仅由大写英文字母
R、G、B
组成
输入:
第一行输入一个正整数T
接下来2T行每两行字符串表示一组色带
输出:
对于每一组色带,如果小明会认为两条色带是同一条输出YES
,否则输出NO
样例输入1:
2
R
B
RRBBGG
GRBBRR
样例输出1:
NO
YES
对于第一组色带,虽然小明分不清红色和绿色但他一定知道那不是蓝色
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
y=int(input())
for i in range(y):st1=input()st2=input()st1=st1.replace('R','G')st2=st2.replace('R','G')if st1==st2:print("YES")else:print("NO")
6、重组数
题目描述
本题目要求读入三个整数a,b,c,请你判断他们是否能表示为其中一个数是另外两个数的加和。
输入:
第一行有一个整数 t (1≤t≤100),表示数据组数。
接下来 t 行 每一行都有三个整数a,b,c(0≤a,b,c≤20)
输出:
对于每一组数据,在一行中输出答案。如果可以按描述里表示,则输出YES
,否则输出NO
样例输入:
3
1 2 3
2 5 8
1 4 3
样例输出:
YES
NO
YES
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
tmp=int(input())
for i in range(tmp):a,b,c=map(int,input().split())if a==b+c or b==a+c or c==a+b:print("YES")else:print("NO")
7、递增序列
题目描述
本题目要求读入正整数N,以及N个正整数A1,A2,…,AN,请你判断通过重新排序后的元素是否可以严格递增。
严格递增是指在数组a中有a1<a2<…<an
约束:
- 1≤N≤100
- 1≤Ai≤100
- 所有的数值都是整数
输入:
第一行有一个整数 t (1≤t≤100),表示数据组数。
接下来 2t 行 一行为整数个数,接下来一行为一组整数,以空格分割
输出:
对于每一组数据,在一行中输出答案。如果可以按描述里表示,则输出YES
,否则输出NO
样例输入:
3
4
1 1 1 1
5
8 7 1 3 4
1
5
样例输出:
NO
YES
YES
在第一个测试组中,任何排序方法都不能使array[1, 1, 1, 1]严格递增
在第二个测试组中,array[1, 3, 4, 7, 8]是严格递增的
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
t=int(input())
for j in range(t):n=int(input())a=list(map(int,input().split()))a=sorted(a)for i in range(n-1):if a[i]>=a[i+1]:print("NO")breakelse:print("YES")
8、最大的偶数Medium
题目描述
本题目要求在给定的N个正整数A1,A2,…,AN中任选1~2个数组成它们中所能组成最大的偶数
,输出这个最大的偶数,保证数组中至少存在一个偶数。
约束:
- 1≤N≤100
- 1≤Ai≤100
- 所有的数值都是整数
输入:
N
A1 A2 … AN
输出:
按照题目的要求输出答案
样例输入1:
4
1 2 3 4
样例输出1:
6
答案是 2 + 4 =6
样例输入2:
3
2 3 5
样例输出2:
8
答案是 3 + 5 = 8
样例输入3:
2
1 10
样例输出3:
10
答案是 10
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
n=int(input())
a=list(map(int,input().split()))
l=[]
for i in range(n):if a[i]%2==0:l.append(a[i])for j in range(n):if i!=j and (a[i]+a[j])%2==0:l.append(a[i]+a[j])
print(max(l))
9、小飞棍的等边三角形
题目描述
本题目要求在给定的N个小飞棍它们的长度分别是A1,A2,…,AN。
你可以执行以下操作的任意次(可能为零):
- 选择一根棍子将他的长度增加或者减少1,每次操作后,所有小飞棍的长度都应该是正整数。
你必须执行最少执行多少次操作,才能选择其中的三根小飞棍不能折断它们并组成一个等边三角形
等边三角形是所有三个边都具有相同长度的三角形
约束:
- 3≤N≤100
- 1≤Ai≤1000
- 所有的数值都是整数
输入:
N
A1 A2 … AN
输出:
按照题目的要求输出答案
样例输入1:
3
1 2 3
样例输出1:
2
你可以将第一根棍子的长度增加1,第三根棍子的长度减少1,来构成一个边长为2的等边三角形
样例输入2:
8
3 1 4 1 5 9 2 6
样例输出2:
1
你可以将第七根棍子的长度减少1,可以由第二根、第四根、第七根构成边长为1的等边三角形
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
n=int(input())
lst=list(map(int,input().split()))
lst.sort()
res=lst[1]-lst[0]+lst[2]-lst[1]
for i in range(1,len(lst)-1):a=lst[i]-lst[i-1]+lst[i+1]-lst[i]if a<res:res=a
print(res)
10、一个!两个!蓝精灵
在广袤安宁的原始森林中,快乐的蓝精灵们正在准备一年一度的蓝月亮节。而就在这欢喜忙碌的关头,他们的宿敌——邪恶的巫师格格巫和他的宠物阿兹猫闯入了蓝精灵的秘密领地。受到惊吓的蓝精灵四散而逃,其中可怜的笨笨则盲打误撞跑进了一个神秘的山洞,山洞中的守护神告诉笨笨它喜欢排好队的小朋友,换句话说蓝精灵们只要按照从矮到高排好队就可以从山洞中通过。
现在村庄里一共有n个蓝精灵,他们的身高为1~n的整数,不存在身高相同的蓝精灵。
你可以每次任意交换队伍中的蓝精灵位置,使他们的顺序变为严格升序。请你编写程序计算最少需要交换几次才能让蓝精灵们通过山洞,躲避格格巫的追捕?
输入格式:
第一行:一个正整数n(n<1000),表示蓝精灵的数量
第二行:n个正整数,用空格分开,表示目前蓝精灵的排列情况,每一个正整数表示该位置蓝精灵的身高。
输出格式:
输出一个正整数,表示至少交换多少次,才能帮助蓝精灵们通过山洞。
输入样例:
5
3 1 2 5 4
输出样例:
3
样例说明:
交换1
号蓝精灵和2
号蓝精灵使队伍变成1 3 2 5 4
交换2
号蓝精灵和3
号蓝精灵使队伍变成1 2 3 5 4
交换4
号蓝精灵和5
号蓝精灵使队伍变成1 2 3 4 5
交换方法不唯一,但可以得出该交换次数是最少的
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
n=int(input())
lst=list(map(int,input().split()))
count=[i for i in range(1,n+1)]
b=0
for i in range(n):if lst[i]!=i+1:for j in range(n):if lst[j]==i+1:lst[i],lst[j]=lst[j],lst[i]b+=1if lst==count:break
print(b)
更多推荐
Python习题十三
发布评论