zoukankan      html  css  js  c++  java
  • hdu2035 人见人爱A^B

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2035

    其实直接每次取余数就能过的 第一遍就是用这种方法过的 这次算是用二分加速过的吧 就是每次都讲底数平方 指数除以2 要是偶数没问题 要是奇数就在将多余的那部成到sum中(初始值为1)  不停地做循环知道b<=1 最后输出sum*a; 注意b开始不能取余数 否则会因为乘法的次数改变而出错

    粘代码:

    View Code
     1 #include<iostream>
    2 using namespace std;
    3 int ex_pow(int a,long long b)
    4 {
    5 long long sum;
    6 a=a%1000;//a可以取余数 但b千万不要取余数 否则b较大时出错!!!因此WA了两次
    7 sum=1;
    8 while(b>1)
    9 {
    10 if(b%2==1)
    11 { sum=(sum*a)%1000;
    12
    13 }
    14 else
    15 {
    16
    17 }
    18 a=a*a%1000;
    19 b=b/2;
    20 }
    21 return sum%1000*a%1000;
    22 }
    23 int main()
    24 {
    25 long long a,b;
    26 while(cin>>a>>b)
    27 {
    28 if(a==0&&b==0)
    29 break;
    30 a=a%1000;
    31 cout<<ex_pow(a,b)<<endl;
    32 }
    33 // system("pause");
    34 return 0;
    35 }


  • 相关阅读:
    第十九周作业
    第十八周作业
    第十七周作业
    第16周作业
    第15周作业
    第14周作业作业
    第13周作业
    第12周作业
    第二阶段月考
    RDB和AOF的区别
  • 原文地址:https://www.cnblogs.com/yujiaao/p/2229261.html
Copyright © 2011-2022 走看看