给定一个含有N个正整数的数组,求出有多少个连续区间(包括单个正整数),它们的和大于等于x
输入:
第一行输入两个正整数N和x, 0 < N<= 100000, 0 <= N<= 1000000
第二行有N个正整数,每个正整数小于等于100
输出:
满足要求的连续区间个数
样例输入:
3 7
3 4 7
样例输出:
4
#include <stdio.h>
unsigned int n, x;
unsigned int arr[100000] = {0};
int main()
{
unsigned int m, n;
unsigned int i = 0;
unsigned int arr_size = 0;
unsigned int count = 0;
unsigned int sum = 0;
scanf("%d %d", &n, &x);
printf("\nn:%d, x:%d\n", n, x);
while (1) {
scanf("%d", &arr[i++]);
arr_size++;
if (getchar() == '\n')
break;
}
i = 0;
while (i < arr_size) {
printf("arr[%d]:%d ", i, arr[i++]); // debug
}
printf("\n"); // debug
for (m = 0; m < arr_size; m++) {
sum = 0;
for (n = m; n < arr_size; n++) {
sum += arr[n];
if (sum >= x) {
count++;
count += (arr_size - n - 1);
printf("满足要求, count:%d, m:%d, n:%d\n", count, m, n); // debug
break;
} else {
printf("不满足要求, count:%d, m:%d, n:%d\n", count, m, n); // debug
}
}
}
printf("count:%d\n", count); // debug
return 0;
}