在一个OJ上的高精度连加(1+2+...+n),TLE求tiao,谢谢QAQ
#include <bits/stdc++.h>
using namespace std;
struct big{
int num[204]={0};
int size,sign;
};
big input(string a){
big b;
b.size=a.size();
for(int i=0,j=a.size()-1;i<b.size;++i,--j)b.num[i]=a[j]-'0';
return b;
}
void clear(big &a){
for(int i=a.size-1;i>=1;--i){
if(a.num[i]==0)--a.size;
else return;
}
}
void print(big a){
clear(a);
for(int i=a.size-1;i>=0;--i)cout<<a.num[i];
}
big add(big a,big b){
big c;
c.size=max(a.size,b.size)+1,c.sign=1;
int flag=0;
for(int i=0;i<c.size;++i){
c.num[i]=a.num[i]+b.num[i]+flag;
flag=c.num[i]/10;
c.num[i]%=10;
}
clear(c);
return c;
}
int main(){
long long int n;
cin>>n;
big ans;
for(long long int i=1;i<=n;++i){
string s=to_string(i);
big x=input(s);
ans=add(ans,x);
}
print(ans);
}