Poj 2356Find a multiple

http://poj.org/problem?id=2356
#include <stdio.h>
#define M 11000
int a[M],b[M]; //b[i]  1~i   


//

//        n   a             % n==0 

//  b[i]  1~i  (1<=i<=n)   bi%n==0      
//       bi%n        1~n-1 
//     n bi n             bi bj    n  ->  n|(bj-bi)       a[i+1]...a[j] 
//   (    )
int main()
{
	int i,j,k,n,f=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		if(i>=2)
		b[i]=b[i-1]+a[i];
		else
		b[i]=a[i];
	}
	for(i=1;i<=n;i++)
	{
		if(b[i]%n==0)
		{	f=1;
			printf("%d
",i); for(j=1;j<=i;j++) { printf("%d
",a[j]); } break; } } if(!f) { for(j=2;j<=n;j++) { for(i=1;i<=j-1;i++) { if((b[j]-b[i])%n==0) { printf("%d
",j-i); for(k=i+1;k<=j;k++) { printf("%d
",a[k]); } f=1;break; } } if(f) break; } } return 0; }

좋은 웹페이지 즐겨찾기