首页 > 解决方案 > OUTPUT ERROR,问题是求和5000位数字cpp

问题描述

这是代码(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,我不知道为什么会发生这种情况

标签: c++algorithmmathstl

解决方案


我不明白你为什么使用std::vector. 您可以在不使用向量的情况下计算总和:

int k=0,sum=0;
for(int i=0;i<s.length();i++)
{
    k = s[i]-'0';
    sum += k;
}

注意:如果您对适合整数的和值有点偏执,您可以使用 an,unsigned integer因为数字不能为负数。


推荐阅读