HDOJ人见人爱n的m次方法1和法2

来源:互联网 发布:淘宝网怎么抢红包 编辑:程序博客网 时间:2024/06/10 00:46

Problem Description求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。 Output对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。Sample Input2 312 66789 100000 0Sample Output89841Author#include <iostream>#include<cstdio>#include<cmath>using namespace std;int main(){    long m,n,sum;    while(scanf("%ld%ld",&m,&n)&&(m||n))    {        if(n==0)        {            printf("1\n");            continue;        }        sum=1;        while(n--)        {            sum*=m;            sum%=1000;        }        printf("%ld\n",sum);    }    return 0;}#include <iostream>#include<cmath>using namespace std;int fun(int a,int b){    int sum;    if(b==1)        sum=a%1000;    if(b>1&&b%2==0)        sum= fun(a,b/2)*fun(a,b/2);    if(b>1&&b%2!=0)        sum=fun(a,b/2)*fun(a,b/2)*a;        return sum%1000;}int main(){    int n,m;    while(cin>>n>>m&&n!=0&&m!=0)    {        n%=1000;        cout<<fun(n,m)<<endl;    }    return 0;}

0 0
原创粉丝点击