TYVJ 1115 同余 解题报告

  我用的暴搜,别人说还有一种方法:题目要求n个数同余。等价于求这n个数两两求差(大减小)所得的所有数的最大公约数。

  我的暴搜代码如下:

#include <stdio.h>
#include <stdlib.h>
int num[100];
int ans;

int main(int argc, char **argv)
{
	int i, j, t;
	int n, max = 0;
	scanf("%d", &n);
	for(i = 0; i < n; i++){
		scanf("%d", &num[i]);
		if(max < num[i]){
			max = num[i];
		}
	}
	for(i = 1; i <= max; i++){
		t = num[0] % i;
		for(j = 1; j < n; j++){
			if(num[j] % i != t){
				break;
			}
		}
		if(j == n){
			ans = i;
		}
	}
	printf("%d\n", ans);
	return 0;
}

  

posted @ 2011-08-07 17:31  zqynux  阅读(227)  评论(0编辑  收藏  举报