逐位處理長串數字需要注意的

2021-10-22 04:44:22 字數 1061 閱讀 7544

之前在做pat的時候,總是會遇到有很長的數字要逐位處理,這種時候一般有兩種方法:

1.用int,long,以及對應的unsighed型別儲存

long number;

scanf

("%ld"

,&number)

;for

(int i=

0; i)

2.用字串接收數字,字串中的每一位字元對應數字的每一位數,利用ascii表得到每一位數

scanf

("%d"

,&n)

;//n是數字的位數

char number[n]

;//字串形式的數字

scanf

("%s"

, number)

;for

(int i=

0; i)

一般如果要處理的數字只有幾位數,就用方法1,數字位數很多(比如100000位)則只能使用字串,但我很疑惑到底要數字大到什麼程度才非要使用字串呢。於是查了一下short、int、long、unsighed int、unsighed short、unsighed long各自的表示範圍:

1.首先,short型別為半個機器字長,int型別為乙個機器字長,而 long型別為乙個或兩個機器字長(以32位機器為例)

2.short:-32768到32767

unsighed short:0到65535

int:-2147483648到2147483647

unsighed int:0到4294967295

long:-922 3372 0368 5477 5808到9223372036854775807

unsighed long:0到18446744073709551615

可見最長的unsighed long長達20位,用億這個概念的話,好像是百億億級別,但這個仍然遠遠比不上字串所能表示的長度。

此外還有關鍵字longlong,表示範圍和long一樣,都是10^19級別

數字在10位以內,可以用int型別的變數來處理,超過10位最好用字串

C 的string逐位處理效率比較

今天看到乙個對string做逐位處理的 我看見 使用指標來指向string,我就在想為什麼不用中括號,型如string s s i 這種操作。想到這個 作者一向以效率優先考慮,於是我測試了一下效率,果不其然。哈哈 include include include include include inc...

需要注意的問題

決策樹id3和c4.5的差別?各自優點?boost演算法 cart 回歸樹用平方誤差最小化準則,分類樹用基尼指數最小化準則 gbdt與隨機森林演算法的原理以及區別。優化演算法中常遇到的kkt條件?作用是?最近鄰演算法knn 分類與回歸 l1和l2函式?l1和l2正則項的比較,如何解決 l1 求導困難...

const需要注意的

1.對於函式後邊新增const後,函式成為const型別,該函式中不允許對類中成員進行修改,可以認為是在該函式中,類成為了const型別。另外要注意的是,const函式中只能呼叫const型別的函式。2.對於const型別的變數來說,只能把const的賦值給非const,不能把非const賦值給co...