2010-12-03 40 views

回答

0

你需要一個庫來爲此提供支持。

0

閱讀數字轉換成字符串,並使用多倍數學庫如GMP做加法。該庫應該具有在數字字符串和數字庫的內部表示之間進行轉換的功能。

(事實上,它看起來像GMP可以從istream直接讀取數字,所以你可能甚至不需要一個字符串)。

0

我對這個問題有點不清楚。如果單獨添加數字,那麼我會以爲你更多的人把它當作一個字符串不是一個整數(至少,直到你開始添加了數字)。

你能澄清1000位的整數需要如何存儲在內存中?

+0

我不是很肯定我是否應該採取作爲輸入字符串或integer.if我把它作爲一個字符串,那麼如何我可以將每個數字轉換爲整數嗎? – 2010-12-03 07:02:48

3

你需要輸入作爲一個字符串。拆分它們,並將每個字符轉換爲整數。把它們加起來,就完成了。

實施例,這裏(隨機生成的)這個號:

9624526619162264306083309360203157186784123851390498919674886891002552146753945797326679482200717699585297042606470048297021049209667042255911984240697992738371633115195140494325737382583412562136836759072897211537655046343769659111215754043609344618490646811291135643554115350431099553593485744944746093896695837300975718819726339233383800764568364950577294931831936979504756278187812548901366714205562309364234394802723329400976924082450161974562063268243689930750925213262044910428021004262080895556879515597779404780565380480750286553508081070834339176079062215815331059349488936312244526697733596052063044560959189161656978673936732284706841120711543620038686227462170335634371808995466024671420024705248851244350701111587608201303840696489479021196275228499780922745352396928865910631672384263395712487735712098161853665189905194589355110620257494673972892816413534347360049692019184831019218764766067298983043791063184786671132332077197148683743991683245617836086353821268720434176862469084808 

而這裏的C++程序:

int strint(std::string &str) { 
    int i; 
    std::stringstream intstr(str); 
    intstr >> i; 
    return i; 
} 

int main() { 
    std::string strdigit, schar; 
    int sum = 0; 
    std::cout << "Enter Digits: "; 
    std::cin >> strdigit; 
    std::stringstream ss; 
    for (int i = 0; i < strdigit.length(); i++) { 
     ss.clear(); 
     ss << strdigit[i]; 
     ss >> schar; 
     sum += strint(schar); 
    } 
    std::cout << sum; 
} 

總和是:4479

2

只需讀取的數字爲一個字符串並使用std :: accumulate。例如:

std::string str("1234567890"); // your number here 

int result = std::accumulate(str.begin(), str.end(), 0, [](int val, char ch) 
{ 
    return val + (ch - '0'); 
}); 

std::cout << result << '\n'; // display the answer 
0

正如馬龍建議的那樣,爲什麼不簡單地使用好的'ol for loop和string?

int main() { 
     string str = "3985792792679283635"; 
     int len = str.length(); 
     int sum = 0; 
     for(int i = 0; i < len; i++) { 
       sum += str[i] - '0'; 
     } 
     cout << sum << endl; 

}