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; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。