栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

中国剩余定理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

中国剩余定理

算法部分参考:
https://blog.csdn.net/u010468553/article/details/38346195

# -*- coding: UTF-8 -*-
from functools import reduce
def Get_Mi(m_list,M):
    M_list=[]
    for mi in m_list:
        M_list.append(M//mi)
    return M_list

def Get_ei_list(M_list,m_list):
    ei_list=[]
    for i in range(len(M_list)):
        ei_list.append(Get_ei(M_list[i],m_list[i]))#这里就原来有改动,来是数组
    return ei_list
   
def Get_ei(a,b):
	# 计算ei
    #        请在此处添加代码       #
    # *************begin************#
    i=1
    while True:
        if (a*i)%b ==1:
            return i
        i+=1

    # **************end*************# 

def crt(a_list,m_list):
	# 计算中国剩余定理,返回计算结果
    #        请在此处添加代码       #
    # *************begin************#
    M = reduce(lambda x, y: x*y,m_list) 
    Mi = Get_Mi(m_list,M)
    ei = Get_ei_list(Mi,m_list)
    '''
    result = map(lambda x,y,z:x*y*z,Mi,ei,a_list)
    没试过不知道行不行
    '''
    sums=0
    for x,y,z in zip(ei,Mi,a_list):
         sums += (x*y*z) #233
    #求解
    return sums%M
    # **************end*************#
  
    
if __name__=='__main__':
    a_list= list(map(int,input().split(",")))
    m_list= list(map(int,input().split(",")))
    print(crt(a_list,m_list))    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号