千家信息网

C语言中大数相乘求和的模运算是怎样的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家分析了C语言中大数相乘求和的模运算是怎样的的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"C语言中大
千家信息网最后更新 2026年11月02日C语言中大数相乘求和的模运算是怎样的

这篇文章主要为大家分析了C语言中大数相乘求和的模运算是怎样的的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"C语言中大数相乘求和的模运算是怎样的"的知识吧。

题目如上图,这是在程序设计或者ACM中常见的数学题目,结合前人经验总结了一下。(开发语言c)

#include

#define INT64 __int64

INT64 PowerMode(INT64 basenum, INT64 powernum, INT64 modenum){

//计算basenum^powernum % modenum

//a^(2c) = (a^c)^2;

//a^(2c+1) = a*((a^c)^2);

//比如a=3,b=13时,我们把b写成二进制的形式13(10)=1101(2)

//我们从低位到高位运算,每运算一位可以将b右移一位,上面的例子可以转化成3^13 = 3^1 * 3^4 * 3^8

//(a*b)%p = a%p * b%p %p

//(a^b)%p = (a%p)^b

//a^13%m=(a^8*a^4*a^1)%m=a^8%m * a^4%m * a^1%m %m

INT64 result = 1;

while(powernum){

if(powernum&1)

result = result * basenum % modenum;

basenum = basenum * basenum % modenum;

powernum>>=1;

}

return result;

}

INT64 MultiAdd(INT64 countnum, INT64 basenum, INT64 modenum){

//(a+b)%p = (a%p + b%p) %p

//

INT64 sum = 0;

for(int i=0; i<=countnum; i++){

sum += (countnum-i)%modenum * PowerMode(basenum,i,modenum) %modenum;

sum %= modenum;

}

return sum;

}

int main(){

INT64 testnum;

scanf("%I64d",&testnum);

while(testnum--){

INT64 n,m,x;

scanf("%I64d %I64d %I64d",&n,&m,&x);

INT64 value = MultiAdd(n,x,m);

printf("%I64d\n",value);

}

return 0;

}

关于"C语言中大数相乘求和的模运算是怎样的"就介绍到这了,更多相关内容可以搜索以前的文章,希望能够帮助大家答疑解惑,请多多支持网站!

运算 语言 大数 内容 知识 跟着 题目 上图 二进制 价值 低位 例子 兴趣 前人 常见 形式 数学 文章 易懂 是在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 为想互联网科技怎么样 互联网科技有限公司图片 互联网金融 科技 北京互联网科技有限公司 互联网与未来科技 奇士达互联网科技 北京禾田雨橡互联网科技 赫美联合互联网科技 互联网科技小额贷款 国外互联网科技网站 互联网科技博主是什么意思 国大互联网教育科技有限公司工作 明优互联网科技有限公司 科技大学互联网 长沙互联网科技 上海科技产业互联网平台 电子商务与互联网科技的关系 陕西九四连强互联网科技有限公司 中国互联网公司的科技投入 米泉互联网科技专业怎么样 互联网下的科技发展 金融科技创新监管互联网金融 互联网科技视频素材 宁波青枫互联网科技有限公司 互联网科技热点资讯 创业天下互联网科技有限公司 广州市恰铎互联网科技有限公司 郑州欣桑互联网科技有限公司 2021世界互联网领先科技成果发布 科技互联网专业工作会议发言稿
0