總網頁瀏覽量

顯示具有 108學年度資訊能力競賽題 標籤的文章。 顯示所有文章
顯示具有 108學年度資訊能力競賽題 標籤的文章。 顯示所有文章

2020年11月19日 星期四

108學年度資訊能力競賽(北二區 【新竹高中考區 】 PM 第1題 射飛機)

 















Python Code:

#n個點座標

n=int(input())

#每的點的座標

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

for i in range(n):

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

    k.append(q)


#求最大公因數

def gcd(x, y):

    return x if y== 0 else gcd(y, x % y)


#輸入點傳回直線係數

def line(p,q):

    A=q[1]-p[1]

    B=-(q[0]-p[0])

    C=p[1]*(q[0]-p[0])-p[0]*(q[1]-p[1])

    d=gcd(gcd(A,B),C)

    a=A//d

    b=B//d

    c=C//d

    if a>0:

        return [-a/b,a,b,c]

    elif a==0:

        if b>0:

            return [0,0,b,c]

        elif b<0:

            return [0,0,-b,-c]

            

    else:

        return [-a/b,-a,-b,-c]

ans=[]#存斜率及a,b,c值

for i in range(n-1):

    for j in range(i+1,n):

        ans.append(line(k[i],k[j]))

slope=[]

for i in range(len(ans)):

    slope.append(ans[i][0])


slope_min=min(slope)


for i in range(1,4):

    print(ans[slope.index(slope_min)][i],end=' ')




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))