PAT 1010一元多項式求導

NO IMAGE

1010 一元多項式求導 (25)(25 分)

設計函式求一元多項式的導數。(注:xn” role=”presentation”>xnxnx^{n}(n為整數)的一階導數為n∗xn−1″ role=”presentation”>n∗xn−1n∗xn−1n*x^{n-1}。)
輸入格式:以指數遞降方式輸入多項式非零項係數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。
輸出格式:以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。注意“零多項式”的指數和係數都是0,但是表示為“0 0”。
輸入樣例:

3 4 -5 2 6 1 -2 0

輸出樣例:

12 3 -10 1 6 0

解析

這題讓我明白了做PAT的道理:
①儘量不要用字串處理數字。
②儘量不要把結果儲存下來,再輸出。而是線上處理
③不要把問題複雜化

PAT輸入
我發現PAT OJ的輸入是怎麼執行的了(可能你們早知道了),PAT的檢查點輸入在儲存在一個檔案裡的。比如說這題的輸入:

3 4 -5 2 6 1 -2 0 EOF

所以使用while(scanf(“%d %d”,&num1,&num2) !=EOF) 是可以在線上處理的

這道題只需要每輸入一組數,就進行處理。

    printf("%d %d",num*exp,exp-1);

最後一個檢測點的輸入是零多項式,你需要檢查你的程式裡是否考慮了這種情況(我覺得這個有些扯淡,完全是看你讀題是否小心)

0 0
#include<stdio.h>
int main()
{
int num = 0;
int exp = 0;
int flag = 1;
while(scanf("%d %d",&num,&exp) !=EOF){
if(exp !=0){
if(flag ==1){
printf("%d %d",num*exp,exp-1);
flag = 0;
}
else
printf(" %d %d",num*exp,exp-1);
}
}
if(flag ==1)
printf("0 0");
return 0;
}