Python解决codeforces ---- 2


第一题 4A

A. Watermelon
time limit per test
1 second
memory limit per test
64 megabytes
input
standard input
output
standard output

One hot summer day Pete and his friend Billy decided to buy a watermelon. They chose the biggest and the ripest one, in their opinion. After that the watermelon was weighed, and the scales showedwkilos. They rushed home, dying of thirst, and decided to divide the berry, however they faced a hard problem.

Pete and Billy are great fans of even numbers, that's why they want to divide the watermelon in such a way that each of the two parts weighs even number of kilos, at the same time it is not obligatory that the parts are equal. The boys are extremely tired and want to start their meal as soon as possible, that's why you should help them and find out, if they can divide the watermelon in the way they want. For sure, each of them should get a part of positive weight.

Input

The first (and the only) input line contains integer numberw(1 ≤ w ≤ 100) — the weight of the watermelon bought by the boys.

Output

PrintYES, if the boys can divide the watermelon into two parts, each of them weighing even number of kilos; andNOin the opposite case.

Sample test(s)
input
8
output
YES
Note

For example, the boys can divide the watermelon into two parts of 2 and 6 kilos respectively (another variant — two parts of 4 and 4 kilos).


题意:给定一个数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

A. Chat Server's Outgoing Traffic
time limit per test
1 second
memory limit per test
64 megabytes
input
standard input
output
standard output

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

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.

Output

Print a single number — answer to the problem.

Sample test(s)
input
+Mike
Mike:hello
+Kate
+Dmitry
-Dmitry
Kate:hi
-Kate
output
9
input
+Mike
-Mike
+Mike
Mike:Hi   I am here
-Mike
+Kate
-Kate
output
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

A. Triangle
time limit per test
2 seconds
memory limit per test
64 megabytes
input
standard input
output
standard output

Johnny has a younger sister Anne, who is very clever and smart. As she came home from the kindergarten, she told his brother about the task that her kindergartener asked her to solve. The task was just to construct a triangle out of four sticks of different colours. Naturally, one of the sticks is extra. It is not allowed to break the sticks or use their partial length. Anne has perfectly solved this task, now she is asking Johnny to do the same.

The boy answered that he would cope with it without any difficulty. However, after a while he found out that different tricky things can occur. It can happen that it is impossible to construct a triangle of a positive area, but it is possible to construct a degenerate triangle. It can be so, that it is impossible to construct a degenerate triangle even. As Johnny is very lazy, he does not want to consider such a big amount of cases, he asks you to help him.

Input

The first line of the input contains four space-separated positive integer numbers not exceeding 100 — lengthes of the sticks.

Output

OutputTRIANGLEif it is possible to construct a non-degenerate triangle. OutputSEGMENTif the first case cannot take place and it is possible to construct a degenerate triangle. OutputIMPOSSIBLEif it is impossible to construct any triangle. Remember that you are to use three sticks. It is not allowed to break the sticks or use their partial length.

Sample test(s)
input
4 2 1 3
output
TRIANGLE
input
7 2 2 4
output
SEGMENT
input
3 5 9 1
output
IMPOSSIBLE


题意:给定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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值