PAT 1010 簡單模擬題

2021-10-07 22:49:51 字數 1562 閱讀 4667

解題思路:

首先是輸入問題,我們可以直接使用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 ...