0
已解决
http://judge.codingtang.com/problem/1249/
题目描述 Description
有三个正整数x,y,z,找到一个大于1的整数a,将其作为除数分别除x,y,z,得到相同的余数,问满足上述条件的a的最小值是多少?若a不存在,则输出No。
输入描述 Input Description
输入一行,每两个数之间用一个空格隔开。(2=<x,y,z<=100000)
输出描述 Output Description
若有满足要求的a,则输出a的值。若没有,则输出No。
样例输入 Sample Input
【输入样例一】
5 7 9
【输入样例二】
3 4 5
样例输出 Sample Output
【输出样例一】
2
【输出样例二】
No
求大佬帮个忙





讲解一下
0
已采纳
首先,这个大于1的整数范围是根据xyz定的,这个a最大只能是xyz中最大的一个,如果高出余数就是xyz本身了,所以应先找出xyz最大的一个数,即:
m=max(x,y);
n=max(y,z);
d1=max(m,n);
m,n自己定义
然后a的最小值是2(由题)
从2到xyz最大数中循环,如果xyz mod i的余数都相等,首次满足这个条件的i就是最小的a,如果循环结束还没有找到符合的a,就输出No,即:
if(x%i==y%i&&y%i==z%i&&x%i==z%i)
{
cout<<i;
return 0;
}
注:return 0是结束程序,在最后如果没有结束程序,也就没有找到a,然后输出No
0
