分析
考虑贪心。
设$n$有$len$位,则$a=10^{len-1}-1$时$S(a)+S(b)$最大。
这个可以证明,但是我不会。
然后就容易搞了。
但是cf上pow会WA掉,所以要用for()。
代码
#include <bits/stdc++.h>
#define re register
typedef int mainint;
#define int long long
using namespace std;
inline int S(int x) {
int rt=0;
while (x) rt+=x%10,x/=10;
return rt;
}
mainint main() {
int n; scanf("%I64d",&n);
int l=0,tmp=n;
while (tmp) ++l,tmp/=10;
int a=1;
for (re int i=1;i<l;i++) a*=10;
a--; int b=n-a;
printf("%I64d\n",S(a)+S(b));
return 0;
}