一:向量表示
各个单词出现频率按从小到大的顺序排列后,即构成了用户输入内容的向量表示。
# 向量表示
# [1, 1, 2]按要求输出1 1 2
while True:
# arrr=map(str,raw_input().split()) # 这句会报错????
arr=raw_input().strip().split(' ')
# arrr1=set(arrr)
arr1=set(arr)
res=[]
for i in arr1:
res.append(arr.count(i))
res.sort()
st=''
for i in res:
st+=str(i)+' '
print st
二:组合概率
零件的序号代表了零件的等级,比如5号零件可以由1号和4号零件组合而成,也可以有2号和3号零件组合而成。现有一个序号为 x 的零件,它是由 n 个序号在[a,b]区间内的零件组合而成,求n 个序号在[a,b]区间内的零件组合为 x 零件的概率。
n,a,b,x=map(int,raw_input().split()) # x有n个序号的和,x的值在[a,b]之间
all,res=0,0
def getfor(a,b,n,x):
global all, res
if n==0:
all+=1
if x==0:
res+=1
else:
for i in range(a,b+1):
getfor(a, b, n - 1, x - i)
getfor(a,b,n,x)
print(res,all)
print '%.4f'%(float(res)/all)
三:简单计算
这题不看,给个流氓答案
while 1:
s = raw_input().replace('^',"**")
print eval(s)
四:格子游戏
有n个格子,从左到右放成一排,编号为1-n。
共有m次操作,有3种操作类型:
1.修改一个格子的权值,
2.求连续一段格子权值和,
3.求连续一段格子的最大值。
对于每个2、3操作输出你所求出的结果。
n,m=map(int,raw_input().split())
arr=[]
for _ in range(n):
arr.append(int(raw_input()))
for _ in range(m):
arr1=map(int,raw_input().split())
if arr1[0]==1:
arr[arr1[1]-1]=arr1[2]
elif arr1[0]==2:
print sum(arr[arr1[1]-1:arr1[2]])
else:
print max(arr[arr1[1] - 1:arr1[2]])
五:军训队列
从头开始一至二报数,凡报到二的出列剩下的依次向前靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的依次向前靠拢,继续从头开始进行一至二报数。。。以后每次从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
# 要理解【从头开始一至二报数,凡报到二的出列】是从头到尾计算的
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# 1 3 5 7 9 11 13 15 17 19 -->去掉2的倍数
# 1 3 7 9 13 15 19 -->去掉3的倍数
# 1 7 13 19 -->去掉2的倍数
# 1 7 19 -->去掉3的倍数
N=int(raw_input())
def delnum(m):
res=range(1,m+1)
if m<=3:
return res
else:
i=2
while m>3:
print res
flag=0
for j in range(m):
if (j+1)%i==0:
res.pop(j-flag)
flag+=1
m=len(res)
if i==2:
i=3
else:
i=2
return res
for _ in range(N):
m=int(raw_input())
res=delnum(m)
string=''
for i in res:
string+=str(i)
string+=' '
print string
六:蛇形填数
在n*n方阵里填入1,2,…,n*n,要求填成蛇形。例如n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
n=int(raw_input())
def getres(n):
res = [[0 for _ in range(n)] for _ in range(n)]
O=n/2+n%2 # 多少圈
num=1
for o in range(O):
for i in range(o,n-o):
# print i,n-o-1,num
res[i][n-o-1]=num
num+=1
if n-o-1<=o:
return res
for j in range(n-o-2,o-1,-1):
# print n-o-1,j,num
res[n-o-1][j]=num
num+=1
for i in range(n-o-2,o-1,-1):
# print i,o,num
res[i][o]=num
num+=1
if o+1>=n-o-1:
return res
for j in range(o+1,n-o-1):
# print o,j,num
res[o][j]=num
num+=1
arr=getres(n)
for i in arr:
print(" ".join([str(x) for x in i]))