题意:告诉你一个最长 长度为100000 的数字, 一个K,要求你改变(改变每一位数字的大小),使得 ∑每一位 的值可以>=k。

思路: 暴力。。 似乎我的太暴力了,直接优先队列维护。差点就超时了…

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6;
char s[maxn];
int cnt=0;
priority_queue <int,vector <int>,greater<int> > a;
int main(void)
{
    int k;
    cin >> k;
    scanf("%s",s);
    ll sum=0;
    for(int i=0; i<strlen(s); i++)
    {
        sum+=s[i]-'0';
        a.push(s[i]-'0');
    }
    if(sum>=k)
    {
        printf("0\n");
        return 0;
    }
    else
    {
        while(1)
        {
            int x=a.top();
            a.pop();
            sum+=(9-x);
            cnt++;
            if(sum>=k)
                break;
        }

    }
    cout << cnt << endl;
}

// 早上好繁琐~~