不懂得详见poj 2356 抽屉原理详解,这题竟然卡精度。。。提交了好几次都WA,改成long long sum[100100] 才对
代码如下:
#include<stdio.h> #include<string.h> int flag[100100],a[100100],str[100100]; long long sum[100100]; int main() { int n,i,j,t,chi; while(~scanf("%d%d",&chi,&n),n) { memset(sum,0,sizeof(sum)); memset(flag,0,sizeof(flag)); for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) { sum[i]=sum[i-1]+a[i]; t=sum[i]%chi; if(t==0) { for(j=1;j<i;j++) { printf("%d ",j); } printf("%d\n",j); break; } else { if(flag[t]==0) { flag[t]=1; str[t]=i; } else { for(j=str[sum[i]%chi]+1;j<i;j++) { printf("%d ",j); } printf("%d\n",j); break; } } } } return 0; }
原文地址:http://blog.csdn.net/lihaogegehuting/article/details/38053265