• 蓝桥杯 算法提高——快速幂


    发现官网给的免费蓝桥杯VIP5月初就过期了,从今天开始每天抽空做些题目

    试题

    资源限制、时间限制:1.0s   内存限制:256.0MB
    问题描述
      给定A, B, P,求(A^B) mod P。
    输入格式
      输入共一行。
      第一行有三个数,N, M, P。
    输出格式
      输出共一行,表示所求。
    样例输入
    2 5 3
    样例输出
    2
    数据规模和约定
      共10组数据
      对100%的数据,A, B为long long范围内的非负整数,P为int内的非负整数。

    解题报告:

    太久没打算法题,连快速幂的幂都给模上了,错了2遍才发现。。。

    不加快速乘也能过,但是为了掌握一下快速乘(刚学,原来这么简单),也写上去了

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int inf=0x3f3f3f3f;
     4 typedef long long ll;
     5 ll kadd(ll a,ll b,ll p) {    ///快速乘 
     6     ll ans=0;
     7     while(b) {
     8         if(b&1) ans=(ans+a)%p;
     9         a=(a<<1)%p;
    10         b>>=1;
    11     }
    12     return ans;
    13 }
    14 ll kpow(ll a, ll b, ll p) {    ///快速幂 
    15     ll ans=1;
    16     while(b) {
    17         if(b&1) ans=kadd(ans,a,p);
    18         a=kadd(a,a,p);
    19         b>>=1;
    20     }
    21     return ans;
    22 }
    23 int main()
    24 {
    25     ll a,b,p;
    26     cin>>a>>b>>p;
    27     ll res=kpow(a%p,b,p);
    28     cout<<res<<endl;
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    day60----日考
    css之单位
    如何装双系统win10下装Ubuntu
    css之Grid Layout详解
    css之position详解
    html+css的用户注册界面
    self-introduction
    ps常用操作
    前端基础之BOM和DOM
    emment语法
  • 原文地址:https://www.cnblogs.com/wuliking/p/12656044.html
Copyright © 2020-2023  润新知