第一种情况
把和取模存到数组
判断为0
直接输出
第二种情况
大佬写的代码简直。。。
抽屉原理
有N个数 N+1个和
而取模后只有0-N-1个数
所以至少有一组相等
相等的两数相减之后就是我们要求的第二种情况
注意输出一组解就可以了
这道题是Special judge 有多组解
抽屉原理好神奇。。。。
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>
using namespace std;
int x[50005];
int ans[50005],tt[50005];
int main()
{
int t;
while(cin>>t)
{
for(int i=1; i<=t; i++)
{
scanf("%d",&x[i]);
ans[i]=(ans[i-1]+x[i])%t;
if(ans[i]==0)
{
printf("%d\n",i);
for(int j=1; j<=i; j++)
cout<<x[j]<<endl;
return 0;
}
if(tt[ans[i]])
{
printf("%d\n",i-tt[ans[i]]);
for(int j=tt[ans[i]]+1; j<=i; j++)
{
printf("%d\n",x[j]);
}
return 0;
}
tt[ans[i]]=i;
}
}
return 0;
}