CodeForces 835B The number on the board

来源:互联网 发布:知乎营销案例 编辑:程序博客网 时间:2024/06/06 18:29

题目链接:http://codeforces.com/contest/835/problem/B
题意:黑板上有一个数,你只知道这个数的每一位的和不小于k,现在有一个人不小心改动了这个数,把这个数变成n了,现在问你这个人从最初的数最少改变了几位数
解析:首先先把n的每一位数求和,如果大于等于k那么就是没有改变,如果小于他,那肯定是从位数最小的数开始改变,然后扫一遍即可

#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;char a[maxn];int main(void){    int k,sum = 0;    scanf("%d %s",&k,a);    int len = strlen(a);    sort(a,a+len);    for(int i=0;i<len;i++)        sum += a[i]-'0';    if(sum>=k)        puts("0");    else    {        int tmp = k-sum;        int cnt = 0,tt = 0;        for(int i=0;i<len;i++)        {            tt += a[i]-'0';            cnt++;            if(cnt*9-tt>=tmp)                break;        }        printf("%d\n",cnt);    }    return 0;}
阅读全文
0 0
原创粉丝点击