第一题 4A
题意:给定一个数w,问能否分成两部分并且每部份都是偶数
思路:w的值很小,暴力枚举两部分的值
代码:
n = int(raw_input())
isOk = False
for i in range(2,n):
if i%2 == 0 and (n-2)%2 == 0:
isOk = True
break
if isOk:
print "YES"
else:
print "NO"
第二题 5A
Polycarp is working on a new project called "Polychat". Following modern tendencies in IT, he decided, that this project should contain chat as well. To achieve this goal, Polycarp has spent several hours in front of his laptop and implemented a chat server that can process three types of commands:
- Include a person to the chat ('Add'command).
- Remove a person from the chat ('Remove'command).
- Send a message from a person to all people, who are currently in the chat, including the one, who sends the message ('Send'command).
Now Polycarp wants to find out the amount of outgoing traffic that the server will produce while processing a particular set of commands.
Polycarp knows that chat server sends no traffic for 'Add' and 'Remove' commands. When 'Send' command is processed, server sendslbytes to each participant of the chat, wherelis the length of the message.
As Polycarp has no time, he is asking for your help in solving this problem.
Input file will contain not more than 100 commands, each in its own line. No line will exceed 100 characters. Formats of the commands will be the following:
- +<name>for'Add'command.
- -<name>for'Remove'command.
- <sender_name>:<message_text>for'Send'command.
<name>and<sender_name>is a non-empty sequence of Latin letters and digits.<message_text>can contain letters, digits and spaces, but can't start or end with a space.<message_text>can be an empty line.
It is guaranteed, that input data are correct, i.e. there will be no'Add'command if person with such a name is already in the chat, there will be no'Remove'command if there is no person with such a name in the chat etc.
All names are case-sensitive.
Print a single number — answer to the problem.
+Mike
Mike:hello
+Kate
+Dmitry
-Dmitry
Kate:hi
-Kate
9
+Mike
-Mike
+Mike
Mike:Hi I am here
-Mike
+Kate
-Kate
14
题意:有三种命令,"+name"是添加一个人,"-name"是删除一个人,"name:message"是这个人发了message给所有人,问最后总的发送的字节数
思路:直接暴力求解,利用Python的list
代码:
dict = []
sum = 0
# input
while True:
try:
str = raw_input()
except:
break
if str[0] == '+':
dict.append(str[1:])
elif str[0] == '-':
dict.remove(str[1:])
else:
length = len(str)
for i in range(length):
if str[i] == ':':
sum += (length-(i+1))*(len(dict))
break
print sum
第三题 6A
题意:给定4条线段,问能否组成三角形,如果可以输出"TRIANGLE",如果不能组成三角形但是会退化输出"SEGMENT",否则输出"IMPOSSIBLE"
思路:直接暴力枚举
代码:
sticks = raw_input().split()
# 判断能否组成三角形
def isOk(x , y , z):
if x+y > z and x+z > y and y+z > x:
return True
return False
# 判断是否会退化
def judge(x , y , z):
if x+y == z or x+z == y or y+z == x:
return True
return False
# 求ans
ans = "IMPOSSIBLE"
for i in range(4):
for j in range(i+1,4):
for k in range(j+1,4):
if isOk(int(sticks[i]),int(sticks[j]),int(sticks[k])):
ans = "TRIANGLE"
if ans == "IMPOSSIBLE" and judge(int(sticks[i]),int(sticks[j]),int(sticks[k])):
ans = "SEGMENT"
print ans