CCF-CSP认证真题解答(python)(部分)--2018-3-2 (碰撞的小球)

2018-3-3(碰撞的小球)

n,L,t=input().split()
n,L,t=int(n),int(L),int(t)
lis=input().split()
lis1=[]
for i in range(n):
    lis1.append([int(lis[i]),1,i])#记录初始小球的序号i
    lis1=sorted(lis1)#根据位置的大小排序
for j in range(t):
    for m in range(n):
        lis1[m][0]+=lis1[m][1]
    for k in range(n):
        if k==0:
            if lis1[k][0]==0:#到达原点时,改变运动方向
                lis1[k][1]=1
        if k==n-1:
            if lis1[k][0]==L:#到达终点时,改变运动方向
                lis1[k][1]=-1
        if k<n-1:
            if lis1[k][0]==lis1[k+1][0]:#两球相撞时,改变运动方向
                lis1[k][1]=-1
                lis1[k+1][1]=1
#根据原始序号输出位置
for i in range(n):
    for j in range(n):
        if lis1[j][2]==i:
            print(lis1[j][0],end=' ')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值