zoukankan      html  css  js  c++  java
  • POJ NOI MATH-7647 余数相同问题

    问题链接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;
    }






  • 相关阅读:
    使用ueditor实现多图片上传案例——Servlet层(UploadServlet)
    使用ueditor实现多图片上传案例——截取字符串层Util(SubString_text)
    [转载]oracle删除数据后的恢复
    [转载]oracle删除数据后的恢复
    为什么在定义hashcode时要使用31这个数呢?
    为什么在定义hashcode时要使用31这个数呢?
    [转载]hashCode和equals
    [转载]hashCode和equals
    Oracle HINT的用法
    Oracle HINT的用法
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563987.html
Copyright © 2011-2022 走看看