A*B mod C的计算方法

2024-04-23 19:38
文章标签 mod 计算方法

本文主要是介绍A*B mod C的计算方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A*B mod C的计算方法

方法一:

大家都能想到,计算A*B的值,然后在计算A*B mod C的值。这是最简单的,但是这个有个弊端,即a*b的值不能太大,太大可能溢出。

方法二:

回顾进制转换的知识,二进制转换为10进制可以以2的权值相加(貌似是这样描述的)。比如13=(1101)2=1*2^3+1*2^2+0*2^1+1*2^0。同样的,当我们计算A*B的时候,也可以将B化成2^n相加的式子。于是,我们可以将a*b mod c转换成[a*(2^b0+2^b1+……2^bn)] mod c=[a*2^b0+a*2^b1+……a*2^bn] mod c。利用公式(a+b)mod c=[(a mod c)+(b mod c)]mod c这个公式进行运算。

代码:

int mul(int a,int b,int c)

{

      int result,tmp;

      tmp=a%c;

     while(b)

     {

           if(b&1)    //根据2相应二进制位的值判断是否加A*2^n;因为有对b进行右移运算,所以每次只需判断最末位的结果就可以。

          {

               result+=tmp;

               if(result>=c)

                  result-=c;

         }

         tmp<<=1; //计算 A*2^n的值。

         if(tmp>=c)

           tmp-=c;

      b>>=1;

   }

   return result;

}

方法三:

乘法可以这样算:a*b=(a&1)*b+[(a>>1)*b]<<1。同时,有公式:(a+b)mod c=[(a mod c)+(b mod c)]mod c

unsigned long long mul(unsigned long long a,unsigned long long b,unsigned long long c)
{
unsigned long long int a1=a,b1=b,c1=c;

if(!a1)
   return 0;
    return (((a1&1)*b1)%c1+(mul(a1>>1,b1,c1)<<1)%c1)%c1;
}

这篇关于A*B mod C的计算方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/929699

相关文章

IBS和IBD的区别和计算方法介绍

大家好,我是邓飞。 今天介绍一下IBS和IBD的区别: IBS(肠易激综合症)和IBD(炎症性肠病)是两种不同的消化系统疾病,主要区别如下: IBS(Irritable Bowel Syndrome):是一种功能性肠道疾病,主要表现为腹痛、腹胀、腹泻或便秘,症状通常与饮食、压力和心理因素相关,没有明显的器质性病变。 IBD(Inflammatory Bowel Disease):是一组

组合c(m,n)的计算方法

问题:求解组合数C(n,m),即从n个相同物品中取出m个的方案数,由于结果可能非常大,对结果模10007即可。       共四种方案。ps:注意使用限制。 方案1: 暴力求解,C(n,m)=n*(n-1)*...*(n-m+1)/m!,n<=15 ; int Combination(int n, int m) { const int M = 10007; int

黑神话:悟空》增加草地绘制距离MOD使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验

《黑神话:悟空》增加草地绘制距离MOD为玩家提供了一种全新的视觉体验,通过扩展游戏中草地的绘制距离,增加了场景的深度和真实感。该MOD通过增加草地的绘制距离,使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验。 增加草地绘制距离MOD安装 1、在%userprofile%AppDataLocalb1SavedConfigWindows目录下找到Engine.ini文件。 2、使用记事本编辑

《黑神话:悟空》专题合集MOD/修改器/壁纸/音乐/CG剧情

《黑神话:悟空》专题合集」 链接:https://pan.quark.cn/s/d67857f4e308 包含内容: 《黑神话:悟空》MOD合集 《黑神话:悟空》修改器(风灵月影) 《黑神话:悟空》壁纸合集 《黑神话:悟空》3小时CG完整剧情合集 4K120帧最高画质!国语 简中字幕 附:4K 结尾动画合集 ​​​国语 简中字幕 《黑神话:悟空》主题曲 《黑神话

go mod 安装bee 报错

go mod 安装bee 报错 go get github.com/beego/bee go: github.com/derekparker/delve@v1.2.0: parsing go.mod: unexpected module path "github.com/go-delve/delve"go: error loading mod

电负性的计算方法

保罗电负性标度是广泛使用的方法之一,由Linus Pauling于1932年提出。这个标度基于实验数据,特别是化学键的键能数据。虽然电负性本身不是直接计算得到的,但保罗通过实验数据提出了一个经验公式: [\Delta E = \frac{1}{2} (E_{AB} - (E_{AA} + E_{BB}))] 其中: ( \Delta E ) 是化学键的键能差, ( E_{AB} ) 是AB

【Steam游戏星露谷物语添加Mod步骤】

Steam游戏星露谷物语添加Mod步骤 星露谷物语添加拖拉机模组一、安装SMAPI二、正式开始添加MOD 星露谷物语添加拖拉机模组 一、安装SMAPI 星露谷物语添加拖拉机mod为例,添加其它mod一样的步骤。 首先,打开Steam,打开一次星露谷物语这款游戏,然后退出游戏。 其次,打开N站(https://www.nexusmods.com/)注册一个账号并登录。 然后,

俩个简单的题:问题 G : 2^x mod n = 1

问题 G : 2^x mod n = 1 时间限制:1 秒内存限制:32 兆特殊判题: 否 提交:5解决: 3 标签 简单数学题 题目描述 给你一个正整数n,要求你找到最小的x(x>0)满足2^x mod n = 1。 输入格式 输入包含多组测试数据。每行一个正整数,代表n的值。 输出 如果最小的x存在,则输出2^x mod n = 1(注意x和n要用具体的值代

计算方法——插值法程序实现(一)

例题 给出的函数关系表,分别利用线性插值及二次插值计算的近似值。 0.10.20.30.40.51.1051711.2214031.3498591.4918251.648721 参考代码一:Python代码实现(自编码) import math""":parameter用于计算插值多项式的系数"""def Parameters(data_x,data_y,size):param

顶顶通热词模型配置热词方法(mod_cti基于FreeSWITCH)

文章目录 前言热词文件模型下载实时热词模型(对接mod_cti)一句话热词模型(对接mod_vad) 前言 在语音转文字时,如果在您的业务领域有一些特有的词,默认识别效果较差的时候可以考虑使用热词模型功能,把这些词添加到一个热词文件中,可以改善这些词的识别结果。这种方式配置后,就可以生效。 也可以处理同音词,例如:王小明和王晓铭,通常普通模型会识别成 “王小明”,如果把