總網頁瀏覽量

2020年11月10日 星期二

108學年度資訊能力競賽(北二區 【新竹高中考區 】 PM 第3題 空氣盒子)

 






















Python Code:

import numpy as lp

#n為n行資料,即(n-1)次多項 p為氣體特徵值,要求為質數 t為預測的時間

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

a=[] # 存入基地台位置

for i in range(n):

    q=[int(x) for x in input().split()] 

    a.append(q)

#將輸入的資料依時間序排好

for i in range(n-1,0,-1):

    for j in range(0,i,1):

        if a[j][0]>a[j+1][0]:

           a[j],a[j+1]=a[j+1],a[j]

#時間愈大,特徵值愈大,若變小,加上特徵值

for i in range(n-1):

    if a[i][1]>a[i+1][1]:

        a[i+1][1]=a[i+1][1]+p

#要解方程式,創建b

b=[]

for i in range(n):

    b.append(a[i][1])

#創建凡得夢行列式

A=[]

for i in range(n):

    q=[]

    for j in range(n):

        q.append((a[i][0])**(n-j-1))

    A.append((q))


#要解方程式,需要A的反矩陣

A_inverse=lp.linalg.inv(A) #取A的反矩陣

x=lp.dot(A_inverse,b)# 矩陣相乘,X=b/A

#定義出特定時間的氣體特徵值

def f(t):

    sum=0

    for i in range(len(x)):

        sum+=x[i]*t**(n-i-1)

    return int(round(sum))

#輸出氣體特徵值        

print(f(t))





沒有留言:

張貼留言