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秒之後的...