演算法 GOJ 1053 還是A B

2021-08-09 22:43:35 字數 1886 閱讀 3544

1053也是一道簡單題,用整形陣列也是可以做出來的。不過我主要用它來熟悉c++ string庫函式的一些用法。

1053題目:

還是a+b

problem description:

讀入兩個小於10000的正整數a和b,計算a+b。需要注意的是:如果a和b的末尾k(不超過8)位數字相同,(位數不足前導補0)請直接輸出-1。

input:

測試輸入包含若干測試用例,每個測試用例佔一行,格式為"a b k",相鄰兩數字有乙個空格間隔。當a和b同時為0時輸入結束,相應的結果不要輸出。

output:

對每個測試用例輸出1行,即a+b的值或者是-1。

sample input:

1 2 1

11 21 1

108 8 2

36 64 3

0 0 1

sample output:3-1

-1100

主要用到的string中的函式有:

1.獲取string的長度,可以用str.size()或str.length().(注意兩者返回的是unsign int ,它比int 高階。 unsign int 型別與int 型別的運算該強制轉換就強制轉換,以避免不必要的錯誤,比如unsign i=5;cout<<(i-6)%7 << endl;//結果為3。

/#不建議使用strlen(char * )來獲取string 的長度,因為strlen接受的引數是char *,需要先將string轉換成char陣列,即strlen(str.c_str()),c_str()是其乙個成員函式,表示將string轉換成char陣列,這樣有點多此一舉#/

2.string類的建構函式。這裡就只先介紹本題用到的(以後遇到相應的題目,再進行補充): string str(size_type n,char c)。說明:建立乙個包含n個元素的string物件str,其中每個元素都被初始化為字元c。

3.string類的插入操作函式。同樣insert函式具有不同的過載函式。這裡同樣只介紹本題用到的: s.insert(pos, str),將str的拷貝插入到s的pos位置,返回s;注意是返回s,也就是s本身已經發生了變化

4.string類的複製操作。本題使用了str.substr(pos, n)。函式說明:返回str中從pos(預設為0)開始的,有n個字元組成的s的子串的拷貝;注意返回的string 型別,str本身不發生變化。

5.int與string的相互轉換。這裡暫且只先介紹string轉int。

方法一:

使用c語言< stdlib.h>中的*atoi(str.c_str())函式,需要先將string型別轉為char 陣列指標。

方法二:

使用c++11中的

stoi(str)**函式,比如 int a=stoi(str); stoi可以轉換為十進位制、八進位制、十六進製制和二進位制數字,不過在codeblocks上,我選擇c++11標準編譯器卻編譯錯誤,好像只能用vs了。

ac**:

#include#include#include//atoi函式

using namespace std;

void changefun(string &str,int k)

}return 0;

}

是做應用還是搞演算法?

這幾天在知乎上看到這樣乙個問題,搞acm和實際開發很遠麼?然後還是由於自己這段時間搞演算法很不順利,就覺得i自己離開演算法去,去做工程比較好。因為我一直覺得我是乙個比較geek的人,很多事情喜歡自己去動手,尤其是喜歡比較實用的東西。比如前段時間,在大一那邊接待新生,我們每個人發了一張 然後來了乙個學...

演算法競賽 高階指南 BZ0J1053 反素數

這是個思維想結論題。根據題目給的條件 推出一些性質,使得問題簡化。1首先根據反素數定義,我們可以得到,反素數一定是1 n中約數最多的數 如果由多個約數相同且最多的數,取最小的那個 證明 假設這個數是m。我們任取x任取x m 都有g m g x 顯然 x m時只有x m符合反素數定義。則x一定是1 n...

還是演算法 高階排序演算法 計數,基數和桶排序

今天剛剛寫完資料結構學習內部排序篇的學習日誌,上網瀏覽一下網頁又發現了幾種自己完全沒聽過的排序演算法。好吧好吧,我承認自己的確是菜鳥。計數排序 想寫個計數排序,結果弄了一整天字元陣列,呵呵,基礎差沒辦法。先介紹一下什麼是計數排序吧 這是乙個限制很大的演算法,雖然效率可以達到o n 但是應用範圍不廣。...