codeforces 835b The number on the board

来源:互联网 发布:芒果tv网络电视机顶盒 编辑:程序博客网 时间:2024/06/06 18:16
B. The number on the board
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Some natural number was written on the board. Its sum of digits was not less than k. But you were distracted a bit, and someone changed this number to n, replacing some digits with others. It's known that the length of the number didn't change.

You have to find the minimum number of digits in which these two numbers can differ.

Input

The first line contains integer k (1 ≤ k ≤ 109).

The second line contains integer n (1 ≤ n < 10100000).

There are no leading zeros in n. It's guaranteed that this situation is possible.

Output

Print the minimum number of digits in which the initial number and n can differ.

Examples
input
311
output
1
input
399
output
0
Note

In the first example, the initial number could be 12.

In the second example the sum of the digits of n is not less than k. The initial number could be equal to n.



给出一个数字,再给出一个数,问最少将下面的数字多少位的数字换掉能够满足每一位的数字求和能够大于等于第一个给出的数字。

贪心,先求和看是不是一开始就超过了,若未超过则将每一位数字从小到大排序,再从小到大开始让9减掉每一位的数字,将差加到求和里面去,一旦超过第一个数字则结束循环的次数就是答案。



#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>#include<map>#include<vector>#include<queue>#include<stack>using namespace std;int main(){char a[1111111];long long int k;while(cin>>k>>a){sort(a,a+strlen(a));int i;long long int sum=0;for(i=0;i<strlen(a);i++)sum+=a[i]-'0';if(sum>=k)cout<<"0"<<endl;else {long long int ans=0;for(i=0;i<strlen(a);i++){if(sum>=k)break;     sum+='9'-a[i];     ans++;}cout<<ans<<endl;}}return 0;}


原创粉丝点击