poj 3370
鸽巢原理。用long long 与scanf.
#include<iostream> #include<fstream> using namespace std; int n,m; long long a[100001]; int b[100001]; void read(){ int i,j,k; // ifstream cin("in.txt"); while(cin>>m>>n){ if(m==0&&n==0) return ; for(i=1;i<=n;i++) { scanf("%d",&j); a[i]=a[i-1]+j; } memset(b,0,sizeof(b)); for(i=1;i<=m;i++) { if(a[i]%m==0) { for(j=1;j<=i;j++) cout<<j<<' '; cout<<endl; break; } if(b[a[i]%m]==0) { b[a[i]%m]=i; } else { for(j=b[a[i]%m]+1;j<=i;j++) cout<<j<<' '; cout<<endl; break; } } } } int main(){ read(); return 0; }