(自用隨筆)PAT A1024

2021-10-03 17:30:17 字數 581 閱讀 1162

涉及大數運算,本人用的很笨的方法,當數字長度超過10時,分兩個char陣列將數字長度大於10的部分和小於10的部分分開存起來,然後轉成long long型大整數再運算。只過了前六個樣例,改不動了。。不過收穫很多:

#include #include #include #include #include using namespace std;

int k;

char *s;

bool isreversenumber(char *s)

{ int leng = strlen(s);

{for(int i = 0;i知識漏洞:

1、定義char固定陣列:char s[30],若將此陣列乙個乙個元素賦值,則在最後結束的地方要手動加上'\0',不然會亂碼。

2、itoa函式不要亂用,不是ansi c標準裡的函式。盡量用snprintf代替,格式如上。其中第二個引數是允許輸入的最大字串長度,大一點為好。

3、int 和 int乘,結果若超出int 範圍,則會得出錯誤結果。要得到正確結果只需其中有至少乙個long long型別的整數。

4、char 型別陣列,不能直接互相賦值,需要用strcpy。

(自用隨筆)PAT A1010

計算乙個數是否能通過某個進製轉換為另乙個數的問題。思路就是把輸入的資料轉化為全數字,再計算number大小。在計算第二個不知道進製的數時,從最低位開始計算,一旦數字超過了number1,就讓進製加一,重新計算,知道數字大小相等。網上比較高效的方法是二分法找進製,我用的笨方法,從2開始往上找。坑點就是...

(自用隨筆)PAT A1003 Emergency

include include define maxn 100000000 int n,m,c1,c2 int wei 505 int w 505 到點v的最大點權之和 int g 505 505 int num 505 到點v的最短路徑條數 int d 505 int vis 505 void d...

(自用隨筆)PAT A1029 Median

聽說這個題原本記憶體限制1.5mb,太嚴格了。逼著你去用歸併排序。我寫的時候沒有想到,直接暴力存陣列,然後從頭乙個乙個比較,直到 n m 2的位置結束。但思想還是歸併。include include include using namespace std int n,m long long p,q ...