Codeforces #835B: The Number on the Board 题解

来源:互联网 发布:java开发外包 编辑:程序博客网 时间:2024/06/06 19:37

将所有数字放进数组排个序

贪心的选择先修改小的数字,将其修改成9,这样可以最大化k步之后的数字和

然后模拟一下就可以了

#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <cmath>#include <algorithm>#include <cstdlib>#include <utility>#include <map>#include <stack>#include <set>#include <vector>#include <queue>#include <deque>#define x first#define y second#define mp make_pair#define pb push_back#define LL long long#define Pair pair<int,int>#define LOWBIT(x) x & (-x)using namespace std;const int MOD=1e9+7;const int INF=0x7ffffff;const int magic=348;char s[200048];int k;int sum=0,l;int a[200048];int main (){int i;scanf("%d",&k);scanf("%s",s+1);l=strlen(s+1);for (i=1;i<=l;i++){sum+=s[i]-'0';a[i]=s[i]-'0';}sort(a+1,a+l+1);if (sum>=k){printf("0\n");return 0;}for (i=1;i<=l;i++){sum+=9-a[i];if (sum>=k){printf("%d\n",i);return 0;}}return 0;}