求一個大數N^N的值的最右邊的數字,即最低位數字。
簡單二分法求解就可以了。
不過注意會溢出,只要把N % 10之後,就不會溢出了,不用使用long long。
#includeint 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; }