题目为输入x,输出1+2+3+...+x
x最大为102000 
#include<bits/stdc++.h>
using namespace std;
int a[10001],b[10001],c[100001],ans[10001],n;
int c1,a1,b1,ans1;
void add(){//加法
c1=a1;
int carry=0;//进位
b[0]=(a[0]+1)%10;//因为首相就是1所以n+1可以转换成a数组的个位加1
carry=b[1]/10;
for (int i=1;i<c1;++i){
int t=a[i]+carry;
carry = t/10;
b[i] = t%10;
//cout<<a[i]<<" "<<b[i]<<" "<<carry<<" "<<c[i]<<endl;
}
b[b1]+=carry;
if(b[b1])++b1;
}
void chef(){//乘法
c1=a1+b1-1;
for (int i=0;i<a1;++i){
for (int j=0;j<b1;++j){
c[i+j]+=a[i]*b[j];
}
}
for (int i=0;i<=c1;++i){//处理进位
c[i+1]+=c[i]/10;
c[i]%=10;
}
if (c[c1])++c1;
//cout<<c1<<" "<<c[c1]<<endl;
for(int i=c1-1;i>=0;--i){
cout<<c[i];
}
}
void chuf(){//除法高精度除2(也就是单精度)
long long r=0;
for (int i=c1-1;i>=0;--i){
r=r*10+c[i];
ansi]=r/2;
r%=2;
}
while (c1>1&&ans[c1-1]==0)--c1;
for(int i=c1-1;i>=0;--i){//输出反过来
cout<<ans[i];
}
}
int main(){
string A;
cin>>A;
a1=A.size();
for(int i=a1-1;i>=0;i--){
a[a1-1-i]=A[i]-'0';
}
//倒序 10变为a[0]=0,a[1]=1也就是01
b1=a1;
add();
chef();
chuf();
return 0;
}