思路:对于每一位统计贡献,不难发现,假设数为12345,个位的贡献就是12345,
十位的贡献是1234(仅当个位跳转时产生贡献),百位贡献是123,后面同理。
12345 +
1234 +
123 +
12 +
1 =
代码:
void solve(){
int n;
cin >> n;
string s;
cin >> s;
reverse(s.begin(),s.end());
while(s.back() == '0'){
s.pop_back();
n --;
}
vector<int>f(n);
for(int i = 0;i < n;i ++)
f[i] = s[i] - '0';
for(int i = n - 2;i >= 0;i --)
f[i] += f[i + 1];
for(int i = 0;i < n;i ++){
if(f[i] >= 10){
if(i == n - 1){
n ++;
f.push_back(0);
}
f[i + 1] += f[i] / 10;
f[i] %= 10;
}
}
reverse(f.begin(),f.end());
for(int i = 0;i < n;i ++)
cout << f[i];
cout << endl;
}