列表

详情


NC205035. 猜数

描述

纸上写了 n 个数字,牛牛在之前改动了几个数字,他忘了他具体改了些数字了。

但是他记得动之前这些数字的和是 的,求他最少改动几个数字。

注意:这些数字在改之前和改之后均在 0 ~ 9 之间,且为整数。

输入描述

第一行给出 n,m

第二行给出 n 个 0 ~ 9 的整数

输出描述

输出最少改动了几个数字。(保证答案 )

示例1

输入:

2 3
1 1

输出:

1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 191ms, 内存消耗: 4280K, 提交时间: 2021-08-19 13:27:29

#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000010],s,ans;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s+=a[i];
	}
	sort(a+1,a+1+n);
	int i=1;
	while(s<m){
		s+=9-a[i];
		i++;
		ans++;
	}
	cout<<ans;
}

pypy3(pypy3.6.1) 解法, 执行用时: 523ms, 内存消耗: 114740K, 提交时间: 2020-05-03 11:37:48

n,m=map(int,input().split(' '))
a=list(map(int,input().split(' ')))
a.sort()
m-=sum(a)
s=0
x=0
i=0
while s<m and i<n:
    if a[i]<9:
        s+=9-a[i]
    i+=1
    x+=1
print(x)

Python3(3.5.2) 解法, 执行用时: 570ms, 内存消耗: 22580K, 提交时间: 2020-05-01 21:54:50

n,m=map(int,input().split())
l=sorted(list(map(int,input().split())))
m,i=m-sum(l),0
while m>0:m-=9-l[i];i+=1
print(i)

上一题