zoukankan      html  css  js  c++  java
  • 解一元同余方程组

    2016.1.26

    试题描述

    给定n个一次同余方程x mod mi=ai,这里i=0,1,2,……,n-1,给定数据保证所有的mi两两互素。求该方程组的解。

    输入
    第一行包含一个正整数n,接下来的n行,每行包括两个整数,对应一个同余方程,第一个数为mi,第二个数为ai,两数间用一个空格分隔。
    输出
    一个数,表示方程组的解。
    输入示例
    3
    3 2
    5 3
    7 2
    输出示例
    23
    其他说明
    数据范围:所有给定的数据均在int32范围内,且保证所有的数据都符合题目描述的要求,结果在long long范围内。

    中国剩菜定理嘛ヾ(o◕∀◕)ノ

    #include<iostream>
    using namespace std;
    int m[101],a[101];
    
    void exgcd(int a,int b,int &x,int &y)
    {
        if(!b) 
        {
            x=1;
            y=0;
            return;
        }
        exgcd(b,a%b,y,x);
        y=y-a/b*x;
    }
    
    int main()
    {
        long long total=1,ans=0;
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&m[i],&a[i]);
            total*=m[i];
        }
        for(int i=1;i<=n;i++)
        {
            int M=total/m[i];
            int x,y;
            exgcd(M,m[i],x,y);
            ans=(ans+a[i]*M*x)%total;
        }
        printf("%d",(ans+total)%total);
        
    }
    View Code
  • 相关阅读:
    Spring 整合 Redis
    Spring 整合 Redis
    C#,Java,MD5加密对等实现
    Java调用JavaWebService
    c#,Java aes加密
    Kettle环境变量配置
    Maven环境配置
    Win10,JDK8,tomact7.0.85配置
    ReverseEngineerCodeFirst 自定义模板
    Aspnet_Session
  • 原文地址:https://www.cnblogs.com/16er/p/5159609.html
Copyright © 2011-2022 走看看