• Codevs 3990 中国余数定理 2


    3990 中国余数定理 2
    时间限制: 1 s
    空间限制: 1000 KB
    题目等级 : 白银 Silver
    传送门
    题目描述 Description
    Skytree神犇最近在研究中国博大精深的数学。
    这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题:
    给定n个质数,以及k模这些质数的余数。问:在闭区间[a,b]中,有多少个k?最小的k是多少?
    Sci蒟蒻数学能力差了Skytree三条街,所以他只好寻求计算机的帮助。他发邮件给同为oier的你,你能帮他解决这个问题吗?
    输入描述 Input Description
    输入第一行为三个正整数n、a、b。
    第2到n+1行,每行有两个整数,分别代表第n个质数和k模第n个质数的余数。
    输出描述 Output Description
    输出为两个整数,代表闭区间[a,b]中k的个数和闭区间[a,b]中最小的k。如果k不存在,则输出两个0。
    样例输入 Sample Input
    样例1:
    3 2 28
    3 2
    5 3
    7 2
    样例2:
    3 24 31
    3 2
    5 3
    7 2
    样例输出 Sample Output
    样例1:
    1
    23
    样例2:
    0
    0
    数据范围及提示 Data Size & Hint
    1<=a<=b<=10^14
    n<=10
    输入保证所有n个质数的乘积<=10^14
    每个质数<=1.5*10^9
    请无视通过率(被人黑了。。。)
    数据保证不会溢出64bit整数
    分类标签 Tags
    数论 欧几里得算法 逆元

    /*
    中国剩余定理(exgcd+逆元)(互质版).
    数学很重要.
    cin很重要.
    */
    #include<iostream>
    #include<cstdio>
    #define MAXN 11
    #define LL long long 
    using namespace std;
    LL l,r,m[MAXN],M1[MAXN],x,ans,sum,y,n,tot=1,b[MAXN],M[MAXN];
    void exgcd(LL a,LL b)
    {
        if(!b)
        {
            x=1;y=0;return ;
        }
        exgcd(b,a%b);
        LL s=x;x=y;y=s-a/b*y;
    }
    int main()
    {
        cin>>n>>l>>r;
        //scanf("%I64d%I64d%I64d",&n,&l,&r);
        for(int i=1;i<=n;i++)  cin>>m[i]>>b[i],tot*=m[i];//①
        for(int i=1;i<=n;i++)  M[i]=tot/m[i];//② 
        for(int i=1;i<=n;i++)
        {
            x=y=0;
            exgcd(M[i],m[i]);
            M1[i]=(x+m[i])%m[i];//③ 
        }
        for(int i=1;i<=n;i++)
        {
            ans=(ans+M[i]*M1[i]%tot*b[i])%tot;//④//随时mod以防爆掉. 
        }
        if(ans<l||ans>r) ans=sum=0;
        else sum=(r-ans)/tot+1;
        cout<<sum<<endl<<ans;;
        //printf("%lld
    %lld",sum,ans);
        return 0;
    }
  • 相关阅读:
    24节气冬至
    最佳人体舒适温度是多少?
    常用正则
    点击按钮后的Loading处理
    支付时过渡动画
    npm ci 和 npm install
    Vue批量上传文件及实时进度
    HTML DOM classList 属性的使用
    Electron Uncaught ReferenceError: require is not defined
    javascript 深拷贝的问题
  • 原文地址:https://www.cnblogs.com/nancheng58/p/6070813.html
Copyright © 2020-2023  润新知