Description
一个n,代表一共有多少个数,接下来给你n个数,让你求一个m,使得前m个数的和大于等于n个数总和的一半.
Input
一个n(0<n<10000)代表一共有多少个数,接下来n个数(1~300)。单组输入输出
Output
输出m
Sample Input 1
4 1 3 2 1
Sample Output 1
2
Sample Input 2
6 2 2 2 2 2 2
Sample Output 2
3
简直太水了这题、、、纪念一下吧~还有一个小的点要注意一下的就是 sum的奇偶!,很多水题中都喜欢拿着一点做文章,还有负数的时候,比如-91,此时÷2后的结果?用移位运算符后的结果?要注意一下哈 。反正(-81>>1)结果是-41我不管。
上代码:
#include<iostream>
using namespace std;
int main()
{int n;int sum=0;int tmp;int a[100005];int ans=0;cin>>n;for(int i = 1;i<=n; i++) {scanf("%d",&a[i]);sum+=a[i];}if(sum&1) {sum>>=1;sum+=1;}else sum>>=1;for(int i = 1; i<=n; i++) {ans+=a[i];if(ans>=sum) {printf("%d\n",i);break;}}return 0 ;}