ccfcsp 2018032 碰撞的小球

2021-10-22 22:05:18 字數 759 閱讀 9968

1.用乙個二維列表儲存每個小球的位置和方向,其中方向只有1和-1。即列表中的a=【x,1】表示第1個小球所處的位置是x,移動方向是向右。

2.每次時間點判斷:小球是否在邊界、是否有小球相碰,若有則改變方向。

n,l,t=map(int,input().split())

b=list(map(int,input().split()))

a=#a[0]=[x,1],表示第1個小球位置在x,方向為正1

for i in b:

while t>0:

#每次移動小球並判斷有沒有碰到邊界

for i in range(len(a)):

a[i][0]=a[i][0]+a[i][1]

if a[i][0]==l or a[i][0]==0:

a[i][1]=-a[i][1]

i=0#判斷有沒有小球相互碰撞

for i in range(len(a)):

for j in range(i+1,len(a)):

if a[i][0]==a[j][0]:

a[i][1] = -a[i][1]

a[j][1] = -a[j][1]

t-=1

for i in a:

print(i[0],end=" ")

若有不足,歡迎討論。

CCF CSP 201803 2 碰撞的小球

問題描述 提示因為所有小球的初始位置都為偶數,而且線段的長度為偶數,可以證明,不會有三個小球同時相撞,小球到達線段端點以及小球之間的碰撞時刻均為整數。同時也可以證明兩個小球發生碰撞的位置一定是整數 但不一定是偶數 輸入格式 輸入的第一行包含三個整數n,l,t,用空格分隔,分別表示小球的個數 線段長度...

CCF CSP 201803 2 碰撞的小球

因為所有小球的初始位置都為偶數,而且線段的長度為偶數,可以證明,不會有三個小球同時相撞,小球到達線段端點以及小球之間的碰撞時刻均為整數。同時也可以證明兩個小球發生碰撞的位置一定是整數 但不一定是偶數 輸入的第一行包含三個整數n,l,t,用空格分隔,分別表示小球的個數 線段長度和你需要計算t秒之後小球...

CCF CSP 碰撞的小球 201803 2

重要理解部分 問題描述輸入的第一行包含三個整數n,l,t,用空格分隔,分別表示小球的個數 線段長度和你需要計算t秒之後小球的位置。第二行包含n個整數a1,a2,an,用空格分隔,表示初始時刻n個小球的位置。輸出格式 輸出一行包含n個整數,用空格分隔,第i個整數代表初始時刻位於ai的小球,在t秒之後的...