解題思路:
首先是輸入問題,我們可以直接使用scanf()的方法,每次接受兩個資料,同時使用while的方法將所有的資料接受完。在每次的迴圈體中,對於兩個資料,按照求導的方式直接放到乙個veoctor中就可以了。
然後是輸出問題,要注意最後乙個數字後面沒有空格。
**:
#include
#include
#include
using
namespace std;
const
int maxn =
1005
;char str[maxn]
;vector<
int> v;
intmain
(void)}
if(v.
size()
==0)printf
("0 0\n");
else
}return0;
}
sb解題過程:
自嘲,我第一次的寫法想的十分複雜,我來回顧一遍第一次的sb寫法,我首先使用字串的形式乙個字元乙個字元的去接受資料,然後使用不斷讓數字*10+新的資料的方法來接受資料,然後還要判斷』-』,搞得非常複雜;
ok;接著我發現了我的sb的第二種寫法,我用字元陣列的形式接受每個資料,然後 將每個資料儲存到乙個陣列中,最後再分別將指數為正數和負數設定兩個陣列,然後再對其進行求導輸出;還沒完,還需要知道什麼時候輸出「0 0」的時候。 寫到這我就知道自己sb了。
最後,發現乙個vector就全部搞定了。我服了。
總結的經驗:
好好審題,題目上面說了是遞減的方式進行輸入,所以不用考慮加法的形式
好好審題,題目總所說的 0階多項式的情況的意思是全部的多項式只剩下「0 0」,所以不要想當然的去自己新增一些人為的「0 0」情況。
#include
#include
#include
using
namespace std;
const
int maxn =
1005
;char str[maxn]
;vector<
int> v;
int a1[maxn]
, a2[maxn]
;bool f =
true
;int maxx1, maxx2;
intmain
(void)}
if(v.
size()
==0)printf
("0 0\n");
else
else
printf
(" %d %d"
, a1[i]
, i)
;for
(int i =
1; i <= maxx2; i ++)if
(a2[i]!=0
)if(f)else
printf
(" %d %d"
, a2[i]
, i *(-
1));
}return0;
}
pat 1010(二分 進製轉換)
pat 1010 思路 用確定的進製找不確定的進製,先求出已知進製的數字n1的10進製的結果sum,用longlong表示,接著確定n2的最小進製,遍歷n2陣列,找出最大的位數l。所以n2的進製在 l 1,sum 1 範圍內,這樣就可以用二分法求解了。include include include ...
PAT1010 一元多項式求導
設計函式求一元多項式的導數。輸入格式 以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。題目來自 include include include inclu...
PAT 1010 一元多項式求導
用的自己的方法。覺得自己是智障。在這道題上磨了很久,因為沒考慮到匯出來結果都是0的情況,在這種情況下,直接輸出0 0就好了。日 好像後面的 可以更加精簡一點。include main spot temp1 0 dowhile ch getchar n temp2 0 temp1 for i 1 i ...