Luogu 题解 P1226 [模板] 快速幂||取余运算
Posted rnin-benny
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu 题解 P1226 [模板] 快速幂||取余运算相关的知识,希望对你有一定的参考价值。
前言
- 本题为快速幂模板;
正文
基本思路
- 直接快速幂;
- 之后取余得结果;
于是代码出来了;
#include <cstdio> using namespace std; int poww(int a,int b){ int ans=1,base=a; while(b != 0){ if(b&1 != 0) ans*=base; base*=base; b>>=1; } return ans; } int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); int ans=poww(a,b)%c; printf("%d^%d mod %d=%d ",a,b,c,ans); return 0; }
结果硬生生给窝WA了五个点!
仔细观看题目后...
!数据类型应开 long long !大意了!
!在快速幂过程中也需一直 mod !
于是...
#include <cstdio> using namespace std; long long poww(long long a,long long b,long long c){ long long ans=1,base=a; while(b != 0){ if(b&1 != 0)
// 取余 ans=ans*base%c; base=base*base%c; b>>=1; } return ans; } int main(){ long long a,b,c; // 类型应为 long long; scanf("%lld %lld %lld",&a,&b,&c); int ans=poww(a,b,c)%c; printf("%lld^%lld mod %lld=%lld ",a,b,c,ans); return 0; }
一道模板题被AC了!
以上是关于Luogu 题解 P1226 [模板] 快速幂||取余运算的主要内容,如果未能解决你的问题,请参考以下文章