码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu 题解 P1226 【[模板] 快速幂||取余运算】

时间:2020-06-15 23:10:04      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:str   mes   pac   mod   style   ret   col   ase   lld   

前言

  • 本题为快速幂模板;

正文

基本思路

  • 直接快速幂;
  • 之后取余得结果;

于是代码出来了;

#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\n",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\n",a,b,c,ans); return 0; }

 

一道模板题被AC了!

 

Luogu 题解 P1226 【[模板] 快速幂||取余运算】

标签:str   mes   pac   mod   style   ret   col   ase   lld   

原文地址:https://www.cnblogs.com/Rnin-Benny/p/13138110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!