代码具体查看github:https://github.com/hoperong/codeforce_problem
所涉及的题目:
61A、59A、144A、344A、405A、472A、25A、734A、268A、443A
codeforces
61A:
题目:
异或
思路:
相同为0,不同为1
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = input()
input_l = input()
m = ''
for i in range(len(input_s)):
if input_s[i] == input_l[i]:
m = '0'
else:
m = '1'
print(m)
59A:
题目:
比较单词中大小写的数量,大写多,则输出全大写,反之输出全小写
思路:
老样子,依题意撸代码,洒洒水啦。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = input()
upper = 0
lower = 0
for i in range(len(input_s)):
if ord(input_s[i]) >= ord('A') and ord(input_s[i]) <= ord('Z'):
upper = 1
else:
lower = 1
if upper > lower:
print(input_s.upper())
else:
print(input_s.lower())
144A:
题目:
士兵排队,需要最高的在第一,最矮的在最后,中间无所谓。每次只能相邻的交换位置,需要多少次?
思路:
找到最高的和最矮的目前的位置,计算他们自己离自己的位置差几步能走到,合起来就是结果了。如果最高的在最矮的右边的话,结果需要减一。因为交换的过程中最高和最矮会经历一次他们两个的交换,这时候一次交换走了两步,结果是计算交换次数而不是走的步数,所以需要减一。
注:代码中,找最大的用大于,是为了找到更靠近左边的最大,这样子在出现相同值的时候,可以少走。最小同理,找最右的。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = input()
input_l = input().split(' ')
max_mount = -1
max_index = -1
min_mount = 999
min_index = -1
for i in range(len(input_l)):
if int(input_l[i]) > max_mount:
max_mount = int(input_l[i])
max_index = i
if int(input_l[i]) <= min_mount:
min_mount = int(input_l[i])
min_index = i
if max_index <= min_index:
print(max_index len(input_l) - 1 - min_index)
else:
print(max_index len(input_l) - 1 - min_index - 1)
344A:
题目:
n块磁铁并排摆放。异性相吸形成一块、同性相斥还是两块。问最后会有形成多少块。
思路:
如果上一次输入和下一次输入一样,则会合在一起形成一块。多少次不同,就有 1次块。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = int(input())
before = ''
mount = 0
for i in range(input_s):
input_l = input()
if before != input_l:
before = input_l
mount = 1
print(mount)
405A:
题目:
堆积木,对完以后全部向右推,形成新的一种结构,然后求出新的结构。
思路:
本质就是排序,小的在左,大的在右。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = int(input())
input_l = input().split(' ')
list_l = []
for i in input_l:
list_l.append(int(i))
for i in range(len(list_l) - 1):
for j in range(i 1, len(list_l)):
if list_l[i] > list_l[j]:
list_l[i], list_l[j] = list_l[j], list_l[i]
s = ''
for i in range(len(list_l)):
s = '{} '.format(list_l[i])
print(s.strip())
472A:
题目:
题主给出了一个一定正确的理论,任何不小于12的数,都可以拆成两个合数相加。
思路:
平分,然后开始向下寻找一对相加等于它的合数,可以减少判断质数的计算量,毕竟数字越大,是质数的概率越小。如果直接从1开始去找合数对,这样子会平白多计算好几次。
还有一种解题方式,就是预先计算好5w以内的质数保存在数组里面。这样子不需要计算质数了,直接判断,更减少计算量,不过加剧了内存使用,是一种空间换时间的方式,有些题目就很需要这样子做。
代码:
#!/usr/bin/env python
# coding=utf-8
def is_primes(number):
is_prime = True
for i in range(2, number):
if number % i == 0:
is_prime = False
break
return is_prime
input_s = int(input())
for i in range(input_s // 2, 3, -1):
if not is_primes(i) and not is_primes(input_s - i):
print('{} {}'.format(i, input_s - i))
break
25A:
题目:
寻找一个等差数列中的出错值的位置。嗯,这个是我之前理解的题意,然后错了n次以后,我才发现,英语不好,就应该老实的google(不仅仅是去翻译),wiki百科告诉我,evenness of numbers, for which see parity (mathematics)。套在题目里,简单说就是,序列的全奇全偶。所以题目就变成了,找到那个异类。
思路:
正确理解题意以后,就非常简单了。奇数偶数,谁只有一个谁就是异类。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = input()
input_l = input().split(' ')
even_index = 0
even_mount = 0
odd_index = 0
odd_mount = 0
for i in range(len(input_l)):
if int(input_l[i]) % 2 == 0:
odd_mount = 1
odd_index = i 1
else:
even_mount = 1
even_index = i 1
if even_mount == 1:
print(even_index)
else:
print(odd_index)
734A:
题目:
A和D比赛下棋,胜利场次多的获胜,存在平局。问最终胜负情况
思路:
老样子,依题意撸代码,洒洒水啦。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = input()
input_l = input()
a = 0
d = 0
for i in range(len(input_l)):
if input_l[i] == 'A':
a = 1
else:
d = 1
if a > d:
print('Anton')
elif a < d:
print('Danik')
else:
print('Friendship')
268A:
题目:
每个球队都有主、客场两套球服,当主场队伍球服和客场队伍球服颜色相同的时候,主场球队会穿上客场球服。题目需要我们在知道主客场球服颜色的情况下,计算下两两对战主客场,有多少次主场球队需要换衣服。
思路:
由于两两主客场对战,所以所有主客场的组合都会相遇。也就是说,只需要去组合主场服装=客场服装的排列组合就可以了。服装种类最多100中,直接用两个数组保存主客场对应的数量,组合相同颜色的主客场的可能性,即a*b,累加所有也就是答案了。
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = int(input())
list_l1 = [0] * 100
list_l2 = [0] * 100
for i in range(input_s):
input_l = input().split(' ')
list_l1[int(input_l[0]) - 1] = 1
list_l2[int(input_l[1]) - 1] = 1
mount = 0
for i in range(100):
mount = list_l1[i] * list_l2[i]
print(mount)
443A:
题目:
计算集合里面有多少个不重复的字母
思路:
python的set去重
代码:
#!/usr/bin/env python
# coding=utf-8
input_s = input()[1:][:-1]
list_s = list([x.strip() for x in input_s.split(',') if len(x.strip()) > 0])
print(len(list(set(list_s))))
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved