思路:对于每一位统计贡献,不难发现,假设数为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;
}