Description
用高精度方法,求s=1+2+3+……+n的精确值(n以一般整数输入)。
Input
一行一个整数n(<1000000)
Output
输出1到n的累加和,一组数据占一行
Sample Input
10
Sample Output
55
思路:两个大数字相加,用一个数组来存放它们每一位的和,然后考虑进位,这个题稍微变了一下,就是用一个循环,就是每加一个数字,先从最低位开始然后一位一位的去进位.
代码如下:
#include<iostream>
using namespace std;
#define MAX_LENGTH 1000
int a[MAX_LENGTH];
int main(){
int n;
cin>>n;
int digit=1,x;
for(int i=1;i<=n;i++){
x=0;
for(int j=0;j<digit;j++){
if(j==0){
a[j]=a[j]+i+x;
x=a[j]/10;
a[j]=a[j]%10;
}
else{
a[j]=a[j]+x;
x=a[j]/10;
a[j]=a[j]%10;
}
}
if(x>0)
a[digit++]=x;
}
for(int i=digit-1;i>=0;i--)
cout<<a[i];
}