您的位置:首页 > 其它

求N个整数的平均值(注意N可能很大,N个数直接相加会造成整数溢出)

2017-05-14 00:14 225 查看
问题

求N个整数的平均值(注意N可能很大,N个数直接相加会造成整数溢出)

分析

这样显然不能直接相加。那么可以每个数先除以N,再将N个数相加。但是由于计算机整数相除的会舍去小数部分,那么我们可以用一个变量保存余数,把每个数的余数都加到该变量上面,然后每次都用这个余数的和去除以N。

代码

int avg(int A[], int N)
{
int ans = 0, res = 0;
for(int i=0; i<N; i++)
{
ans += A[i]/N;
res += A[i]%N;
ans += res/N;
res = res%N;
}
return ans;
}


时间复杂度O(N)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息