1. 程式人生 > >PAT B1010 一元多項式求導 (25 分)

PAT B1010 一元多項式求導 (25 分)

iostream -html 長度 函數 msu sin std clas lse

設計函數求一元多項式的導數。(註:x?n??(n為整數)的一階導數為nx?n?1??。)

輸入格式:

以指數遞降方式輸入多項式非零項系數和指數(絕對值均為不超過 1000 的整數)。數字間以空格分隔。

輸出格式:

以與輸入相同的格式輸出導數多項式非零項的系數和指數。數字間以空格分隔,但結尾不能有多余空格。註意“零多項式”的指數和系數都是 0,但是表示為 0 0

輸入樣例:

3 4 -5 2 6 1 -2 0

輸出樣例:

12 3 -10 1 6 0
#include <stdio.h>
#include <iostream>
const int maxn = 1010;
int poly[maxn] = { 0
}; using namespace std; int main(){ int a, exp, count = 0; while (scanf("%d %d", &a, &exp)!=EOF){ // if(exp>0){ if (count == 0){ printf("%d", a*exp); } else{ printf(" %d", a*exp); } printf(" %d
", exp - 1); count++;} } if(count==0){ printf("0 0"); } system("pause"); }

註意點:題目輸入不固定長度,要用 while (scanf("%d %d", &a, &exp)!=EOF) 讀取,最開始用getchar來判斷最後一個是不是0來判斷輸入結束,發現太愚蠢了,題目又沒有保證多項式的常數項一定有。由於是高項開始輸入因此可以直接讀一個輸出一個,不用再保存到一個數組中,保存到數組中一定要註意不能只判斷poly[i]>0,因為系數會小於0,所以判斷條件為!=0。

PAT B1010 一元多項式求導 (25 分)