赞
踩
给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。
输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。
对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。
- num = eval(input())
- for i in range(num):
- case = input()
- case = case.split(' ')
- if(round(eval(case[0]),1)+round(eval(case[1]),1)>round(eval(case[2]),1)):
- print("Case #{}: true".format(i+1))
- else:
- print("Case #{}: false".format((i+1)))
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。 若其中某一类数字不存在,则在相应位置输出“N”。
- n = input()
- nums = list(map(int,n.split(' ')))
- A = [0]*5
- t1,t2=0,0
- for i in range(1,len(nums)):
- if nums[i]%10==0:
- A[0]+=nums[i]
- elif nums[i]%5==1:
- t1+=1
- if t1%2==0:
- A[1]-=nums[i]
- else:
- A[1]+=nums[i]
- elif nums[i]%5==2:
- A[2]+=1
- elif nums[i]%5==3:
- A[3]+=nums[i]
- t2+=1
- elif nums[i]%5==4:
- if A[4]<nums[i]:
- A[4]=nums[i]
- for i in range(5):
- if A[i]==0:
- A[i]='N'
- if(A[3]!='N'):
- A[3]=round(A[3]/t2,1)
- print("{} {} {} {} {}".format(A[0],A[1],A[2],A[3],A[4]))
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很 快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是 第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、 以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串, 请帮助福尔摩斯解码得到约会的时间。
输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。
在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期 四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。
- item1 = input()
- item2 = input()
- item3 = input()
- item4 = input()
- time = []
- t = 0
- for i in range(len(item1)):
- if item1[i]==item2[i]and (item2[i]>='A'and item2[i]<='Z'):
- t = ord(item2[i])-ord('A')+1
- t%=7
- if t==0:
- time.append("SUN")
- elif t==1:
- time.append("MON")
- elif t==2:
- time.append("TUE")
- elif t==3:
- time.append("WED")
- elif t==4:
- time.append("THU")
- elif t==5:
- time.append("FRI")
- elif t==6:
- time.append("SAT")
- t = i+1
- break
- for i in range(t,len(item1)):
- if item1[i]==item2[i]:
- if item1[i]>='0'and item1[i]<='9':
- time.append(str(0)+item1[i])
- elif item1[i]>='A'and item1[i]<='N':
- t = ord(item1[i])-ord('A')+10
- time.append(t)
- break
- for i in range(len(item3)):
- if item3[i]==item4[i]and item3[i].isalpha():
- if i>=10:
- time.append(i)
- else:
- time.append(str(0)+str(i))
- break
- print("{} {}:{}".format(time[0], time[1], time[2]))
-
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之 小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 现给出一批考生的德才分数,请根据司马光的理论给出录取排名。
输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格 被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到 但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼 亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。 随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。
输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人 总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。
- def met(ranks):
- return -ranks[1]-ranks[2],-ranks[1],ranks[0]
- lt = list(map(int,input().split()))
- num = lt[0]
- rank1 = []
- rank2 = []
- rank3 = []
- rank4 = []
- for i in range(lt[0]):
- ls = list(map(int,input().split()))
- if ls[1]>=lt[2] and ls[2]>=lt[2]:
- rank1.append(ls)
- elif ls[1]>=lt[2] and lt[1]<=ls[2]<lt[2]:
- rank2.append(ls)
- elif ls[1]>=ls[2] and lt[1]<=ls[2]:
- rank3.append(ls)
- elif ls[1]>=lt[1] and ls[2]>=lt[1]:
- rank4.append(ls)
- else:
- num-=1
- print(num)
- for l in (rank1,rank2,rank3,rank4):
- l.sort(key = met)
- for j in range(len(l)):
- print("{} {} {}".format(l[j][0],l[j][1],l[j][2]))
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。 现给定A、DA、B、DB,请编写程序计算PA + PB。
输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。
在一行中输出PA + PB的值。
- ls = list(map(str,input().split()))
- t1,t2=0,0
- for i in range(len(ls[0])):
- if ls[0][i]==ls[1]:
- t1+=1
- for i in range(len(ls[2])):
- if ls[2][i]==ls[3]:
- t2+=1
- sum=0
- for i in range(t1):
- sum+=int(ls[1])*pow(10,i)
- for i in range(t2):
- sum+=int(ls[3])*pow(10,i)
- print(sum)
-
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入在1行中依次给出A和B,中间以1空格分隔。
在1行中依次输出Q和R,中间以1空格分隔。
- ls = list(map(str,input().split()))
- lt = []
- t = 0
- lk = []
- sum=0
- for i in range(len(ls[0])):
- t*=10
- t+=int(ls[0][i])
- if (i+1)%8==0:
- k=t//int(ls[1])
- num = 8-len(str(k))
- if i!=7:
- for j in range(num):
- lt.append('0')
- lt.append(str(k))
- t = t-k*int(ls[1])
- sum = t
- k = len(ls[0])%8
- ls[0] = ls[0][::-1]
- for i in range(k):
- lk.append(ls[0][i])
- lk = lk[::-1]
- t = sum
- for i in range(k):
- t*=10
- t+=int(lk[i])
- K = t // int(ls[1])
- num = k - len(str(K))
- for j in range(num):
- lt.append("0")
- lt.append(str(K))
- t = t - K * int(ls[1])
- for i in range(len(lt)):
- print(lt[i],end='')
- print(" {}".format(t))
大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代 表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯 一,则输出按字母序最小的解。
- num = eval(input())
- ls = []
- ResultJ = [0,0,0,0,0,0]
- ResultY = [0,0,0,0,0,0]
- for i in range(num):
- ls.append(list(map(str,input().split())))
- if ls[i][0]=='J' and ls[i][1]=='C':
- ResultY[0]+=1
- ResultJ[2]+=1
- ResultY[4]+=1
- elif ls[i][0]=='J' and ls[i][1]=='B':
- ResultJ[0]+=1
- ResultY[2]+=1
- ResultJ[5]+=1
- elif ls[i][0]=='C' and ls[i][1]=='B':
- ResultJ[2]+=1
- ResultY[0]+=1
- ResultY[3]+=1
- elif ls[i][0]=='C' and ls[i][1]=='J':
- ResultJ[0]+=1
- ResultY[2]+=1
- ResultJ[4]+=1
- elif ls[i][0]=='B' and ls[i][1]=='C':
- ResultJ[0]+=1
- ResultY[2]+=1
- ResultJ[3]+=1
- elif ls[i][0]=='B' and ls[i][1]=='J':
- ResultJ[2]+=1
- ResultY[0]+=1
- ResultY[5]+=1
- elif (ls[i][0]=='B' and ls[i][1]=='B')or(ls[i][0]=='J' and ls[i][1]=='J')or(ls[i][0]=='C' and ls[i][1]=='C'):
- ResultJ[1]+=1
- ResultY[1]+=1
- for i in range(3):
- if i in ([0,1]):
- print(ResultJ[i],end=' ')
- else:
- print(ResultJ[i])
- for i in range(3):
- if i in ([0,1]):
- print(ResultY[i],end = ' ')
- else:
- print(ResultY[i])
- MaxJ = max(ResultJ[3],ResultJ[4],ResultJ[5])
- MaxY = max(ResultY[3],ResultY[4],ResultY[5])
- for i in range(3,6):
- if ResultJ[3]==MaxJ:
- print("B ",end='')
- break
- elif ResultJ[4]==MaxJ:
- print("C ",end='')
- break
- else:
- print("J ",end='')
- for i in range(3,6):
- if ResultY[3]==MaxY:
- print("B")
- break
- elif ResultY[4]==MaxY:
- print("C")
- break
- else:
- print("J")
给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。
每个输入包含1个测试用例,即一个不超过1000位的正整数N。
对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。
- number = input()
- number = str(number)+' '
- num = set(number)
- num = list(num)
- num.sort()
- for i in range(1,len(num)):
- print("{}:{}".format(num[i],number.count(num[i])))
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入在一行中依次给出3个整数A、B和D。
输出A+B的D进制数。
- r = ''
- tmp = list(map(int,input().split()))
- a = tmp[0]+tmp[1]
- d = tmp[2]
- while a:
- r+=str(a%d)
- a = a//d
- print (r[::-1])
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如: 给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。 现给定数字,请编写程序输出能够组成的最小的数。
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空 格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
在一行中输出能够组成的最小的数。
- lt = list(map(int,input().split()))
- t=0
- for i in range(10):
- if i==0:
- continue
- if t==0:
- if lt[i]>0:
- print(i,end='')
- print('0'*lt[0],end='')
- print(str(i)*(lt[i]-1),end='')
- t+=1
- else:
- print(str(i)*lt[i],end='')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。