C ++中长整数数组的总和
Sum of long integer array in c++
我知道这个问题被问过很多次,但我在我的代码中遇到了不同的问题,我尝试计算 2-15 之间的长整数之和。
代码:
long array[20];
long NUMBERS;
cout << "How many numbers ? : ";
cin >> NUMBERS;
long sum=0;
for (int i = 0; i < NUMBERS;i++){
cout << "Input number " << (i+1) << " : ";
cin >> array[i];
}
cout << "Calculate Sum" << endl;
for (int i = 0; i < NUMBERS;i++){
sum = sum + array[i];
}
cout << "Sum is : " << sum << endl;
当我输入这三个数字时。
- 1234567
- 123456
- 12345
输出:
总数是:1370368
但实际答案是:3703627。
我尝试了这些解决方案
summing-large-numbers and 但仍然没有得到正确的解决方案,如果用户输入不同范围的不同数字,我们如何解决这个问题。
您的程序似乎假定所有数字都是 7 位数字:
1234567
123456[0]
12345[00]
这不是关于编程,而是关于数学...
希望这会有所帮助:http://www.wikihow.com/Add-Large-Numbers
(举个简单的例子,1和11相加,结果是12还是21?)
我的代码将大数字与字符串相加。
首先,您输入要求和的数字数量(至 25)。
然后你输入数字(到 180 'each number')。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main (){
int band;
cin >> band;
string string_of_number[25];
for (int i=0; i<band; i++){ //for get all string number
cin >> string_of_number[i];
}
int strings_length[band];
for (int i=0; i<band; i++){ //for get all length of strings
strings_length[i]=string_of_number[i].length();
}
int answer[180];
for(int i=0; i<180; i++){
answer[i]=0;
}
int remaner=0;
int sum=0;
int last=180;
for (int h=0; h<band; h++){ // for sum strings with sum answer one by one
int j=179;
for (int i=strings_length[h]; i>=0; i--){
if(string_of_number[h][i]=='[=10=]'){
i--;
}
sum = (remaner + (string_of_number[h][i]-'0') + answer[j]) %10;
remaner = ((string_of_number[h][i]-'0') + answer[j]) / 10;
answer[j]=sum;
if (i==0 && remaner>0){
j--;
answer[j]+=remaner;
remaner=0;
}
if(last>j)
last=j;
j--;
}
}
for(; last<180; last++){
cout << answer[last];
}
}
我知道这个问题被问过很多次,但我在我的代码中遇到了不同的问题,我尝试计算 2-15 之间的长整数之和。
代码:
long array[20];
long NUMBERS;
cout << "How many numbers ? : ";
cin >> NUMBERS;
long sum=0;
for (int i = 0; i < NUMBERS;i++){
cout << "Input number " << (i+1) << " : ";
cin >> array[i];
}
cout << "Calculate Sum" << endl;
for (int i = 0; i < NUMBERS;i++){
sum = sum + array[i];
}
cout << "Sum is : " << sum << endl;
当我输入这三个数字时。
- 1234567
- 123456
- 12345
输出:
总数是:1370368
但实际答案是:3703627。
我尝试了这些解决方案
summing-large-numbers and
您的程序似乎假定所有数字都是 7 位数字:
1234567
123456[0]
12345[00]
这不是关于编程,而是关于数学... 希望这会有所帮助:http://www.wikihow.com/Add-Large-Numbers
(举个简单的例子,1和11相加,结果是12还是21?)
我的代码将大数字与字符串相加。 首先,您输入要求和的数字数量(至 25)。 然后你输入数字(到 180 'each number')。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main (){
int band;
cin >> band;
string string_of_number[25];
for (int i=0; i<band; i++){ //for get all string number
cin >> string_of_number[i];
}
int strings_length[band];
for (int i=0; i<band; i++){ //for get all length of strings
strings_length[i]=string_of_number[i].length();
}
int answer[180];
for(int i=0; i<180; i++){
answer[i]=0;
}
int remaner=0;
int sum=0;
int last=180;
for (int h=0; h<band; h++){ // for sum strings with sum answer one by one
int j=179;
for (int i=strings_length[h]; i>=0; i--){
if(string_of_number[h][i]=='[=10=]'){
i--;
}
sum = (remaner + (string_of_number[h][i]-'0') + answer[j]) %10;
remaner = ((string_of_number[h][i]-'0') + answer[j]) / 10;
answer[j]=sum;
if (i==0 && remaner>0){
j--;
answer[j]+=remaner;
remaner=0;
}
if(last>j)
last=j;
j--;
}
}
for(; last<180; last++){
cout << answer[last];
}
}