我想一次输入一个 1000 位的整数,并且想单独添加数字。有没有输入法可以输入这么大的输入?
问问题
2462 次
6 回答
4
您需要将其作为字符串输入。拆分它们,并将每个字符转换为整数。把它们加起来,你就完成了。
例如,这里的数字(随机生成):
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
于 2010-12-03T05:38:30.703 回答
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
于 2010-12-03T05:48:04.107 回答
0
您需要一个库来为此提供支持。
于 2010-12-03T05:27:27.153 回答
0
将数字读入字符串并使用多精度数学库(如GMP)进行加法。该库应该具有用于在数字字符串和库的内部数字表示之间进行转换的功能。
(实际上,GMP 看起来可以直接从 中读取数字istream
,因此您甚至可能不需要字符串。)
于 2010-12-03T05:31:53.787 回答
0
我对这个问题有点不清楚。如果您要单独添加数字,那么我会认为您将其更多地视为字符串而不是整数(至少在您开始添加数字之前)。
您能否阐明如何将 1,000 位整数存储在内存中?
于 2010-12-03T05:33:21.747 回答
0
正如马龙建议的那样,为什么不简单地使用好的 'ol 循环和字符串?
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;
}
于 2010-12-03T05:52:18.330 回答