题意:输入一组数,将其割成三段,每一段的值相同
解法:因为要割三组值相同,所以每一组的值一定是整体求和的1/3
千万记得long long,血的代价
#include <stdio.h> #include <string.h> long long num[500005]; int main() { int n; long long a; int i,j; long long all; while(scanf("%d",&n)!=-1) { all=0; memset(num,0,sizeof(num)); for(i=0;i<n;i++) { scanf("%I64d",&a); num[i]=num[i-1]+a; } if(num[n-1]%3!=0) { printf("0\n"); continue; } long long temp=num[n-1]/3; a=0; for(i=n-2;i>=0;i--) { if(num[i]==temp) all+=a; if(num[i]==(2*temp)) a++; } printf("%I64d\n",all); } return 0; }
时间: 2024-11-29 02:06:40