【题目描述】题目链接点这里
给出三个整数 a,b,m,求 a^bmodm 的值。
【输入格式】
一行三个整数 a,b,m。
【输出格式】
一个整数,表示 a^bmodm 的值。
【样例输入】
2 100 1007
【样例输出】
169
【数据范围与提示】
对于全部数据,1≤a,b,m≤10^9。
思路:mod(就是求余数)快速求mod就是将a^b % c,就是 a的b次方mod c,如果我们将a的b次方求出来再mod,首先,a的b次方会超内存,比如说: 3的10000次方就已经超过int和long long的范围,这自然是不行的,所以我们要定义一个函数,来做到一边乘,一边mod。
举个栗子: 3^4%5=1=81%5=1;这个可以理解的吧,这个就属于全部乘起来再mod,但是再大一点的数,就会内存超限
边乘边mod是什么意思呢? 首先我们先将3^4 拆成 3*3*3*3;那么我们可以先让前面两个3先mod5,9%5=4;接下来我们让mod出来的4乘以下一个3再%5,就是第三个3,4*3%5=2; 然后重复这一步,2*3%5=1;
这样下来,不断的用小规模取mod,可以省内存和空间。
【代码实现】
#include<cstdio>
#include<cstring&

该博客介绍了如何快速计算a的b次方模m的值,解决大整数溢出问题。通过边乘边mod的方法,避免了直接计算a^b可能导致的内存超限。给出了样例输入输出,并提供了基础的代码实现,适用于涉及平方和mod运算的问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



