【发布时间】:2021-09-21 09:07:28
【问题描述】:
给定一个数组,我们必须取一个数组的平均值,然后取该平均值的下限,该值应小于 k。 本题链接:-https://www.hackerearth.com/practice/data-structures/arrays/1-d/practice-problems/algorithm/minimum-additions-0142ac80/
我的密码:-
#include "bits/stdc++.h"
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
int arr[n];
int s = 0;
for(int i=0;i<n;i++){
cin>>arr[i];
s += arr[i];
}
int ans;
if(floor(s/n)<=k){
cout<<0<<endl;
}
else{
cout<<floor( s/(k+1) - n + 1 )<<endl;
}
}
return 0;
}
在我的代码层功能无法正常工作时,它通过了小测试用例,但是当它为大型测试用例运行时却失败了。在讨论中,有些人正在使用 (sum/n) 和 ll int result=sum/(k+1)-n+1; 及其所有测试案例通过。
我们也可以使用 floor 函数执行此操作,但 floor 函数在我的代码中无法正常工作。
谁能帮助我的代码并告诉我为什么 floor 函数在我的代码中不起作用以及为什么我们在代码中使用 k+1 和 n+1 我们可以使用任何不同的逻辑以不同的方式执行此操作吗?
【问题讨论】:
-
请不要使用所谓的“竞赛”或“在线评判”网站来学习 C++ 或一般编程。这不是他们真正的目的。许多例子倾向于使用非常坏的习惯,这些习惯会让你几乎失业。不幸的是,这段代码显示了许多这些坏习惯。一种实际上使代码无效的 C++。如果您认真学习编程和 C++,请投资some good books 并上课。
-
"给定一个数组,我们必须取一个数组的平均值,然后取该平均值的下限,该值应小于 k。"这不是任务要求你的代码做的事情
-
使浮点类型的分区。
-
顺便说一句,您根本不需要数组(或者更好的是
std::vector),因为您实际上不需要存储每个元素,只需阅读它并添加到总和中。
标签: c++ average addition minimum floor