POJ NOI MATH-7647 余数相同问题

来源:互联网 发布:淘宝网半身长摆裙 编辑:程序博客网 时间:2024/05/29 08:10
问题链接POJ NOI MATH-7647 余数相同问题。




总时间限制:
1000ms
内存限制:
65536kB
描述

已知三个正整数 a,b,c。

现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同。

请问满足上述条件的x的最小值是多少?

数据保证x有解。

输入
一行,三个不大于1000000的正整数a,b,c,两个整数之间用一个空格隔开。
输出
一个整数,即满足条件的x的最小值。
样例输入
300 262 205
样例输出
19
来源
《奥数典型题举一反三(小学六年级)》 (ISBN 978-7-5445-2883-2) 第一章 第一讲 例1



问题分析

  看似一个数论问题,没有想出好办法,只好用穷举法来解了。

程序说明

  (略)




AC的C++语言程序之一:

#include <iostream>using namespace std;typedef long long LL;const LL N = 1000000;int main(){    LL a, b, c;    cin >> a >> b >> c;    // a=|b-a|, b=|c-b|    a = b - a;    if(a < 0)        a = -a;    b = c - b;    if(b < 0)        b = -b;    // 计算a=|b-a|和b=|c-b|的最小公倍数    if(a % 2 == 0 && b % 2 == 0)        cout << 2 << endl;    else        for(LL i=3; i<=N; i+=2)            if(a % i == 0 && b % i == 0) {                cout << i << endl;                break;            }    return 0;}


AC的C++语言程序之二:

#include <iostream>using namespace std;typedef long long LL;const LL N = 1000000;int main(){    LL a, b, c;    cin >> a >> b >> c;    // a=|b-a|, b=|c-b|    a = b - a;    if(a < 0)        a = -a;    b = c - b;    if(b < 0)        b = -b;    // 计算a=|b-a|和b=|c-b|的最小公倍数    for(LL i=2; i<=N; i++)        if(a % i == 0 && b % i == 0) {            cout << i << endl;            break;        }    return 0;}


AC的C++语言程序之三:

#include <iostream>using namespace std;typedef long long LL;const LL N = 1000000;int main(){    LL a, b, c;    LL temp1, temp2, temp3;    cin >> a >> b >> c;    for(LL i=2; i<=N; i++) {        temp1 = a % i;        temp2 = b % i;        temp3 = c % i;        if(temp1 == temp2 && temp2 == temp3) {            cout << i << endl;            break;        }    }    return 0;}






0 0
原创粉丝点击