【发布时间】:2020-10-24 12:01:36
【问题描述】:
这是代码(cpp)
#include <iostream>
#include <string>
#include <numeric>//to import the accumulate function
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<long long> vi;
string s; //this contains the long number its better not to type here
int k=0,sum=0;
for(int i=0;i<s.length();i++){
k=(int)s[i]-(int)'0';
cout<<k<<endl;
vi.push_back(k);
}
for(int i:vi){
cout<<i<<endl;
}
cout<<accumulate(vi.begin(),vi.end(),0);
}
无论我做什么,我都会得到答案 22660 我尝试使用不累积仍然 22660,我不知道为什么会发生这种情况
【问题讨论】:
-
在不知道数字是多少的情况下,很难说出为什么会得到 22660。
-
提示:将数字读取为字符串。访问数字,例如:
int digit_value = number_as_string[x] - '0'; -
@cigien 对 5000 位求和不应溢出 int。
-
@ThomasMatthews 这就是他正在做的事情还是我错过了什么?
-
为什么在隔离后将数字放入
vector?为什么不直接将数字添加到 sum 变量中?