Description
一个n,代表一共有多少个数,接下来给你n个数,让你求一个m,使得前m个数的和大于等于n个数总和的一半.
Input
一个n(0<n<10000)代表一共有多少个数,接下来n个数(1~300)。单组输入输出
Output
输出m
简直太水了这题、、、纪念一下吧~还有一个小的点要注意一下的就是 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 ;
}