zoukankan      html  css  js  c++  java
  • HDU 1097.A hard puzzle-快速幂/取模

    快速幂:

    代码:

    ll pow_mod(ll a,ll b){
         ll ans=1;
         while(b){
             if(b%2==1){
                 ans=ans*a%mod;
             }
             a=a*a%mod;
             b=b/2;                              //这里是转化为二进制之后的进位---左进位
         }
         return ans;
     }

    例子:

      2^10       1 0 1 0 a=2,b=10   0-->a=a*a;a=4 进位为1-->ans=4;a=16;

                                                                          进位为0-->a=256;

                                                                          进位为1-->ans=4*256=1024;
      2^8         1 0 0 0 a=2,b=8    a=a*a  a=4 a=16  a=256 ans=ans*a;
      2^11       1 0 1 1 a=2,b=11   ans=2;a=4;ans=8;a=16;a=256;ans=8*256;

    写了一道题:

    这道题要在快速幂中取模,利用公式a*b%c=((a%c)*b)%c,这样每一步都进行这种处理,这就解决了a^b可能太大存不下的问题,但这个算法的时间复杂度依然没有得到优化

    HDU1097A hard puzzle

    Problem Description
    lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how to know the a^b.everybody objects to this BT problem,so lcy makes the problem easier than begin.
    this puzzle describes that: gave a and b,how to know the a^b's the last digit number.But everybody is too lazy to slove this problem,so they remit to you who is wise.
     
    Input
    There are mutiple test cases. Each test cases consists of two numbers a and b(0<a,b<=2^30)
     
    Output
    For each test case, you should output the a^b's last digit number.
     
    Sample Input
    7 66 8 800
     
    Sample Output
    9 6
     
     
     
     
    代码;
    #include<bits/stdc++.h>
    using namespace std;
    typedef unsigned long long ull;
    ull mod=1e9;
    ull pow(ull a,ull b){ ull ans=1;
       
    while(b!=0){ if(b%2==1) ans=ans*a%mod; a=a*a%mod; b=b/2; } return ans; } int main(){ ull a,b; while(~scanf("%llu%llu",&a,&b)){ ull cnt=pow(a,b); ull ans=cnt%10; printf("%llu ",ans); } return 0; }
     


     

  • 相关阅读:
    Python3之命令行参数处理
    基于 Laradock 环境 Project 的总结
    Typora功能新发现-自动复制图片到指定目录下
    ubuntu 18.04 设置静态ip方法
    vscode 同时编辑多处,多个光标 快捷键
    nginx和ftp搭建图片服务器
    Centos 6.5出现yum安装慢的情况
    Linux中的CentOS 6克隆之后修改
    springMVC-文件上传CommonsMultipartFile
    Spring和mybatis整合 org.mybatis.spring.mapper.MapperScannerConfigurer
  • 原文地址:https://www.cnblogs.com/ZERO-/p/6485682.html
Copyright © 2011-2022 走看看