码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 10407 - Simple division

时间:2014-11-11 19:14:16      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   sp   for   div   on   2014   log   

题目:给你几个数,求使他们同于的最大除数。

分析:数论。取其中两不相同数的差,差值一定是除数的倍数,利用差值枚举除数即可。

说明:小心都是素数的情况,被坑了╮(╯▽╰)╭。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>

using namespace std;

long long save[1001];

int main()
{
	int count;
	while (cin >> save[count=0] && save[count]) {
		count ++;
		while (cin >> save[count] && save[count])
			count ++;
			
		sort(save, save+count);
		int s = save[count-1]-save[0];
		for (int i = 1 ; i < count ; ++ i)
			if (save[i] > save[i-1] && save[i]-save[i-1] < s)
				s = save[i]-save[i-1];
		
		for (int i = 1 ; i <= s ; ++ i)
			if (s%i == 0) {
				int d = s/i,r = (save[0]%d+d)%d,flag = 1;
				for (int j = 1 ; j < count ; ++ j)
					if ((save[j]%d+d)%d != r) {
						flag = 0;
						break;
					}
				if (flag) {
					cout << d << endl;
					break;
				}
			}
	}
	return 0;
}


UVa 10407 - Simple division

标签:blog   io   os   sp   for   div   on   2014   log   

原文地址:http://blog.csdn.net/mobius_strip/article/details/41013863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!