題目:1010 一元多項式求導 (25 分)
設計函數求一元多項式的導數。(注:xn(n為整數)的一階導數為nxn−1。)
輸入格式:
以指數遞降方式輸入多項式非零項系數和指數(絕對值均為不超過 1000 的整數)。數字間以空格分隔。
輸出格式:
以與輸入相同的格式輸出導數多項式非零項的系數和指數。數字間以空格分隔,但結尾不能有多余空格。注意“零多項式”的指數和系數都是 0,但是表示為
0
。
0輸入樣例:
3 4 -5 2 6 1 -2 0
輸出樣例:
12 3 -10 1 6 0
思路:
- 這個題目還是簡單的,只是要注意剛開始輸入指數就是0的情況,這種情況就直接輸出0 0並結束程序就好了,其他正常輸入的情況遇到指數為0的就不做輸出處理。不然測試點2、4會過不了。
- 還有一個略微麻煩的地方就在格式處理。
代碼:
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <sstream> 5 #include <cmath> 6 #include <algorithm> 7 #include <string> 8 #include <stack> 9 #include <queue> 10 #include <vector> 11 #include <map> 12 using namespace std; 13 14 struct mulnomial{ 15 int coef; 16 int index; 17 }nomial[1005]; 18 19 int main() 20 { 21 int cnt = 0; 22 while(1) 23 { 24 scanf("%d%d", &nomial[cnt].coef, &nomial[cnt].index); 25 if(nomial[cnt].index == 0 && cnt == 0) 26 { 27 printf("0 0"); 28 break; 29 } 30 if(nomial[cnt].index == 0 && cnt != 0) 31 break; 32 if(cnt != 0) 33 printf(" "); 34 printf("%d %d", nomial[cnt].coef * nomial[cnt].index, nomial[cnt].index-1); 35 cnt++; 36 } 37 return 0; 38 }
總結:
這題是邊輸入邊處理邊輸出的題,用結構體其實做麻煩了,實際上不需要結構體直接設立兩個普通整型進行輸入也可以解決。而且感覺個人在細節處理上有點冗長,可以說沒必要吧……。25行--31行的處理就顯得有點重復。