计算long long int的总和

时间:2017-01-24 15:43:26

标签: c++ c++14

  

(计算长长数的总和)

每当我输入一个很长的数字时,程序总是返回-1或-2,任何人都知道为什么?

#include <iostream>
#include <math.h>
#include <string>
#include<iomanip>
using namespace std;
int main()
{
int n,i;
long long x1,x2,s;
do{
cin>>n;
}while(n<1);
long long t1[n];
long long t2[n];
string ch1,ch2;
i=0;
do{
    do{
        scanf("%lld %lld", &x1, &x2);   
        ch1=to_string(x1);
        ch2=to_string(x2);
    }while((ch1.length()>pow(10,5)) || (ch2.length()>pow(10,5)));
t1[i]=x1;
t2[i]=x2;
i++;
}while(i<n);
for(i=0;i<n;i++){
    s=t1[i]+t2[i];
    cout<<s<<endl;
}
return 0;
}

无法找到解决方案请帮助!和thx提前!

  

示例输入:

     

1

     

14444444444444444111115556

     

55656464684646464646647676

     

输出

     

-2

//编辑:

有没有办法计算100000的十进制数字之和,就像使用标准库的示例中的数字一样?

1 个答案:

答案 0 :(得分:3)

long long等基本积分类型的范围有限。如果计算导致结果大于可以表示的结果,则它将溢出。有符号整数溢出在C ++中有未定义的行为。

通过使用整数数组来表示数字的不同部分,可以表示无限范围的数字(理论上,内存限制了实践)。这种技术称为任意精度算术

C ++标准库中没有任意精度类型的实现,因此您必须自己实现,或者可以使用其他人实现的库。