poj2356 Find a multiple

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int a[10009];
int b[10009];
void ans(int m,int n)
{
    int i;
    printf("%d\n",n-m+1);
    for(i=m;i<=n;i++)
    {
        printf("%d\n",a[i]);
    }
    //printf("\n\n");//
}
int main()
{
    int sum=0;
    int n;
    scanf("%d",&n);
    int i;
    for(i=0;i<n;i++)
    {
        b[i]=-1;
    }
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        sum=(sum+a[i])%n;
        if(sum==0)
        {
            ans(0,i);
            return 0;
        }
        if(b[sum]!=-1)
        {
            ans(b[sum]+1,i);
            return 0;
        }
        b[sum]=i;
    }
    //system("PAUSE");
    return 0;
}

posted @ 2012-07-12 08:51  willzhang  阅读(105)  评论(0编辑  收藏  举报