#include <stdio.h>


int main()
{
	int p[3004] = { 0 };
	int n, m, a, b, c = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++) scanf("%d", &p[i]);
	scanf("%d %d", &a, &b);

	// a번쨰 수부터 b번쨰 수까지의 합 저장
	for (int i = a - 1; i < b; i++) c += p[i];

	// count에 연속 부분 수열 개수를 저장
	int count = 0;

	// i: 연속 부분 수열의 시작 위치
	for (int i = 0; i < n; i++)
	{
		// ans 변수에 값을 누적하여 출력 여부를 결정한다.
		int ans = 0;

		// j: 연속 부분 수열의 끝 위치
		for (int j = i; j < n; j++)
		{
			// ans에 값을 누적한다.
			ans += p[j];

			// 연속 부분 수열 a[i..j]의 합이 n과 같음
			if (ans == c)
			{
				// 연속 부분 수열의 개수 저장
				count++;

				// C1에서는 양수만 봐서 break를 하면 되지만
				// C2에서는 음수까지 봐서 뒤에 값들에 정답이 있을 수 있으므로
				// break를 안해준다.
                // 예시 입력: p = { 0, 1, -1 }, a = 1, b = 1 일 때
                // break를 안하면 정답 3이 나오지만
                // break를 추가하면 오답 2가 나온다.
			}
		}
	}
	// 정답 출력
	printf("%d", count);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C1  (0) 2023.02.10
2021 SFPC C0  (0) 2023.02.10
2021 SFPC B0  (0) 2023.02.09
#include <stdio.h>


int main()
{
	int p[100] = { 0 };
	int n, m, a, b, c = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++) scanf("%d", &p[i]);
	scanf("%d %d", &a, &b);

	// a번쨰 수부터 b번쨰 수까지의 합 저장
	for (int i = a - 1; i < b; i++) c += p[i];

	// count에 연속 부분 수열 개수를 저장
	int count = 0;

	// i: 연속 부분 수열의 시작 위치
	for (int i = 0; i < n; i++)
	{
		// ans 변수에 값을 누적하여 출력 여부를 결정한다.
		int ans = 0;

		// j: 연속 부분 수열의 끝 위치
		for (int j = i; j < n; j++)
		{
			// ans에 값을 누적한다.
			ans += p[j];

			// 연속 부분 수열 a[i..j]의 합이 n과 같음
			if (ans == c)
			{
				// 연속 부분 수열의 개수 저장
				count++;
				
				// C1에서는 양수만 계산하는데 뒤에 값들이 양수면
				// 계산을 안해도 되므로 break를 해서 for문을 나가준다.
				break;
			}
		}
	}
	// 정답 출력
	printf("%d", count);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C0  (0) 2023.02.10
2021 SFPC B0  (0) 2023.02.09
2021 SFPC B1  (0) 2023.02.09
#include <stdio.h>

int main()
{
	int a[24] = { 4, 2,  3,  1,  10,  3,  1,  3,  4,  5,  9,  7,  4,  1,  3,  8,  2,  5, 1, 9 };

	int n = 18;

	// count에
	int count = 0;
	// i: 연속 부분 수열의 시작 위치
	for (int i = 0; i < 20; i++)
	{
		// ans 변수에 값을 누적하여 출력 여부를 결정한다.
		int ans = 0;
		// j: 연속 부분 수열의 끝 위치
		for (int j = i; j < 20; j++)
		{
			// ans에 값을 누적한다.
			ans += a[j];
			// 연속 부분 수열 a[i..j]의 합이 n과 같음
			if (ans == n)
			{
				count++;
				// 이 for문을 나간다(j for문)
				break;
			}
		}
	}
	// 정답 출력
	printf("%d", count);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10
2021 SFPC B0  (0) 2023.02.09
2021 SFPC B1  (0) 2023.02.09
2021 SFPC A0  (0) 2023.02.08

+ Recent posts