2614671_ac_15ms_196k.cpp

来自「北大大牛代码 1240道题的原代码 超级权威」· C++ 代码 · 共 55 行

CPP
55
字号
#include <stdio.h>
#include <string.h>

int n;
int s[10001], S[10001], sum[10001];
int mark[10001];

void input()
{
	int i, j;

	scanf("%d",&n);
	for(i = 0; i < n; i++)
	{
		scanf("%d",&s[i]);
		S[i] = s[i];
		s[i] %= n;
		if(i)
			sum[i] = sum[i-1]+s[i];
		else
			sum[i] = s[i];
	}
	for(i = 0; i < n; i++)
	{
		if(sum[i]%n==0)
		{
			printf("%d ",i+1);
			for(j = 1; j <= i+1; j++)
				printf("%d ",S[j-1]);
			return ;
		}
		sum[i] %= n;
	}
	memset(mark,0,sizeof(mark));
	for(i = 0; i < n; i++)
	{
		if(!mark[sum[i]])
			mark[sum[i]] = i+1;
		else
		{
			printf("%d ",i+1-mark[sum[i]]);
			for(j = mark[sum[i]]+1; j <= i+1; j++)
				printf("%d ",S[j-1]);
			return ;
		}
	}
}

int main()
{
	input();
	printf("\n");
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?