• 【洛谷P1226 【模板】快速幂||取余运算】


    题目描述
    输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。

    输入输出格式
    输入格式:
    三个整数b,p,k.

    输出格式:
    输出“b^p mod k=s”

    s为运算结果

    作为初学者,还是应当用简洁的方法和代码(我认为很简洁),废话不说,直接看代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 long long x(long long int a,long long int b,long long int c)//设一个小小的函数
     6 {
     7     long long s=1,i=a;
     8     while(b!=0)//十分的明确(当b不为0时,该题才继续进行)
     9     {
    10         if(b&1)//按位与1,(系统内直接转化2进制(至于按位与不会的,寄几去学))
    11         {
    12             s=s*i%c;
    13         }
    14         b=b>>1;//右移一位
    15         i=i*i%c;    
    16     }
    17     return s%c;//取余
    18 }
    19 int main()
    20 {
    21     long long int b,p,k,s;
    22     cin>>b>>p>>k;
    23     s=x(b,p,k);
    24     cout<<b<<"^"<<p<<" "<<"mod"<<" "<<k<<"="<<s;//按题目输出
    25     return 0;
    26 }

    至于代码中的多次取余,则是害怕结果爆炸而提前防备(不怕寄几试试)(至于为什么,则是乘法分配律了)

    若还有不懂的(我也无能为力了)

  • 相关阅读:
    Openflow1.3
    10行Python代码实现人脸定位
    Ubuntu安装Docker
    docker 命令部分
    tf.truncated_normal和tf.random_normal使用方法的区别
    Tensorboard服务激活
    Tensorflow基础
    TFRecords转化和读取
    卷积层+池化层的理解
    TensorFlow实现LeNet5模型
  • 原文地址:https://www.cnblogs.com/gongcheng456/p/10408447.html
Copyright © 2020-2023  润新知