2020年4月21日 星期二

[C_MM237-中] 多項式的微分

[C_MM237-中] 多項式的微分

成績: 0 / 倒扣: 0.8
問題描述
一個多項式可以用下列通式表示:
f(x) = Cnxn + Cn-1xn-1 + . . . + C1x1 + C0x0
其中 Cn 表示 x 的 n 次項係數, Cn 為包含零的任意正負整數,而 n 為包含零的任意正整數。而 f(x) 的微分可表示成:
f ¢ (x)=nCnxn-1 + (n-1)Cn-1xn-2 + . . . + C1
請寫一個程式輸入一個多項式,然後輸出這個多項式的微分方程式。多項式輸入方式為指定所有非零係數項的係數數值與該次項的冪次方,冪次方由大至小依序指定。相鄰數字請用單一空格區隔。例如多項式 f(x) = 2x4 + 10x2 – 5x1 – 10x0 的輸入方式為: 2 4 10 2 -5 1 -10 0 。這個多項式的微分方程式輸出格式為:
8x^3+20x^1–5
每一項包含係數(含正負符號)、變數 x 、符號 ^ (表示次方)以及冪次方,請避免一個數字前面同時出現正負符號。項與項之間不必留空格。
輸入說明
輸入一個多項式所有非零係數項的係數數值(任意不為零的正負整數)與該次項的冪次方( 0 或任意正整數)。
輸出說明
輸出多項式的微分方程式。
範例
Sample Input:Sample Output:
1 4 -2 3 -5 0
-2 5 6 2 -10 1
4x^3-6x^2
-10x^4+12x^1-10

while True:  
    try:  
        m = list(map(int,input().split()))  
        r = []  
        for i in range(len(m)//2):  
            if m[2*i + 1]*m[2*i] == 0:  
                break  
            else:  
                r.append(m[2*i + 1]*m[2*i])  
                r.append(m[2*i + 1] - 1)  
        #print(r)  
        rs = ''  
        for i in range(len(r)//2):  
            if r[2*i + 1] == 0:  
                strs = '+' + str(r[2*i]) if r[2*i] > 0 else str(r[2*i])  
            else:  
                if i == 0:  
                    strs = str(r[2*i]) +'x^' + str(r[2*i + 1])  
                else:  
                    if r[2*i] > 0:  
                        strs = '+' + str(r[2*i]) + 'x^' + str(r[2*i + 1])  
                    else:  
                        strs = str(r[2*i]) + 'x^' + str(r[2*i + 1])  
            rs += strs  
        print(rs)  
    except(EOFError):  
        break

沒有留言:

張貼留言