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 [模板] 快速幂||取余运算的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1226 取余运算||快速幂

Luogu P1226 取余运算||快速幂(数论,分治)

Luogu P1226 取余运算||快速幂 (思路待补)

[每日一题2020.06.15]P1226 模板快速幂取余运算

小肥杨训练营——快速幂模板

洛谷 P3390 模板矩阵快速幂 题解