HDU 1061 Rightmost Digit解决问题的方法

求大量N^N的值最右边的数字,即最低位。

它将能够解决一个简单二分法。

只是要注意溢出,只要把N % 10之后。我不会溢出,代替使用的long long。

#include <stdio.h>
int rightMost(int n, int N)
{
if (n == 0) return 1;
int t = rightMost(n / 2, N);
t = t * t % 10;;
if (n % 2) t *= N;
return t % 10;
} int main()
{
int T, n;
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
printf("%d\n", rightMost(n, n%10));
}
return 0;
}

版权声明:笔者靖心脏,景空间地址:http://blog.csdn.net/kenden23/。只有经过作者同意转载。

上一篇:Struts学习-Hibernate2


下一篇:make -f dc_debug.mak 提示错误"/usr/bin/ld:can not find -l***"解决办法