HDOJ 1097(幂取模)

简介: //超时代码,需要o(logn)#include int main(){ int m,n,i,ans=1; while (scanf("%d%d",&m,&n)!=EOF) { for (i=1;i>1; } return (int)ans;}*/int main(){ int m,n; wh...

 

//超时代码,需要o(logn)
#include <stdio.h>
int main()
{
int m,n,i,ans=1;
while (scanf("%d%d",&m,&n)!=EOF)
{
for (i=1;i<=n;i++)
{
ans*=m;
ans%=10;
}
printf("%d\n",ans);
}
}

#include<stdio.h>
long pow_mod(int m, int n, int p)
{
//if(!n) return 1;
long temp;
long ans;
if(0==n)
return 1;
temp = pow_mod(m, n/2, p);
ans = temp * temp % p;
if(n&1) ans = ans * m % p;
return ans;
}
int main()
{
long m, n;
while(~scanf("%ld%ld", &m, &n))
printf("%ld\n", pow_mod(m, n, 10));
return 0;
}

 

 我发现全按long可以
m n不安long会停止


//也对

int pow_mod(int x,int y,int p)
{
long long t=x;
long long ans=1;
while(y)
{
if(y&1)
ans=t*ans%p;
t=t*t%p;
y=y>>1;
}
return (int)ans;
}*/
int main()
{
int m,n;
while(~scanf("%d%d",&m,&n))
printf("%d\n",pow_mod(m,n,10));
return 0;
}


//运用abmodp=(amodp)*(bmodp)modp

自己用个变量打印一下递归调用次数你就知道了

目录
相关文章
|
5月前
|
C++
3 的幂(C++)
3 的幂(C++)
62 0
|
5月前
|
C++
2 的幂(C++)
2 的幂(C++)
49 1
|
5月前
|
C++
4的幂(C++)
4的幂(C++)
40 0
|
存储 C++
求2的N次幂(C++)解决高精度运算
求2的N次幂(C++)解决高精度运算
254 0
|
Java C++ Python
负数取余,取余和取模
负数取余,取余和取模
HDOJ 2099 整除的尾数
HDOJ 2099 整除的尾数
84 0
HDOJ 2006 求奇数的乘积
HDOJ 2006 求奇数的乘积
87 0
HDOJ1021题 Fibonacci Again 应用求模公式
HDOJ1021题 Fibonacci Again 应用求模公式
123 0
|
Java
HDOJ 1753 大明A+B(大数~)
HDOJ 1753 大明A+B(大数~)
108 0