CodeForces

Luogu

分析

考虑贪心。

设$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;
}
最后修改:2019 年 09 月 24 日 01 : 29 PM