问题标题: 酷町堂:1249 相同的余数

0
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
我要回答