求N个整数的平均值(注意N可能很大,N个数直接相加会造成整数溢出)
2017-05-14 00:14
225 查看
问题
求N个整数的平均值(注意N可能很大,N个数直接相加会造成整数溢出)
分析
这样显然不能直接相加。那么可以每个数先除以N,再将N个数相加。但是由于计算机整数相除的会舍去小数部分,那么我们可以用一个变量保存余数,把每个数的余数都加到该变量上面,然后每次都用这个余数的和去除以N。
代码
时间复杂度O(N)
求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)
相关文章推荐
- 唉,栽在了a+b上,注意两个int型相加可能溢出
- 判断两个64位无符号整数a和b相加是否溢出
- 写正确函数需要注意的地方:输入两个整数n和m,从数列1,2,3,...n中随意取几个数,使其和为m,列出所有可能组合
- java实现两个大数相加,可能出现溢出错误
- 有符号整数翻转问题----注意溢出的问题
- pku Drainage Ditches 简单最大流 直接套模板 注意可能有重边
- 如何检测整数相加溢出
- 如何判断整数相加是否溢出
- 字符串转换为整数问题中需要注意的问题——溢出问题
- 如何判断两个整数相加减是否溢出
- HDU1028 Ignatius and the Princess III 【求一个整数被分为多个数相加有多少种可能】
- 如何判断两个整数相加减是否溢出
- LeetCode7——Reverse Integer(将一个整数反转,注意溢出的处理)
- 判断两个int类型的整数相加,相减是否溢出的C语言代码
- 如何判断两个整数相加减是否溢出
- 关于判断无符号整数相加溢出
- 如何判断两个整数相加减是否溢出
- 实现大整数相加(考虑符号位,可能有负整数) 思维严谨程度!!
- 判断两个整数相加是否溢出的方法
- 判断两个整数相加是否溢出的方法