AtCoder Grand Contest 021
目標: 300点を速解きする.
1WAしたので速くはないですね. B以降は着手してないです.
A - Digit Sum 2
i桁目を9にしてi+1桁目から1引く, 出来ないなら桁借りする.
これを繰り返す. 出来た数の各桁を足して答え.
#include <bits/stdc++.h> using namespace std; string n; void diff(int i) { if(n[i] == '0') { n[i] = '9'; diff(i - 1); } else { n[i]--; } } int main(void) { cin >> n; if(n.length() == 1) { cout << n << endl; return 0; } for(int i = n.length() - 1; i > 0; i--) { if(n[i] != '9') { n[i] = '9'; diff(i - 1); } } int ans = 0; for(int i = 0; i < n.length(); i++) { ans += n[i] - '0'; } cout << ans << endl; }