http://acm.hdu.edu.cn/showproblem.php?pid=1061
Memory Limit: 65536/32768 K (Java/Others)
2 3 4
7 6HintIn the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7. In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
找规律吧:
基本代码:
/*0ms,228KB*/ #include<cstdio> int y; int ans(int temp) { switch (temp) { case 0: return 0; case 1: return 1; case 2: y %= 4; if (y == 0) y = 4; switch (y) { case 1: return 2; case 2: return 4; case 3: return 8; case 4: return 6; } case 3: y %= 4; if (y == 0) y = 4; switch (y) { case 1: return 3; case 2: return 9; case 3: return 7; case 4: return 1; } case 4: y %= 2; if (y == 0) y = 2; switch (y) { case 1: return 4; case 2: return 6; } case 5: return 5; case 6: return 6; case 7: y %= 4; if (y == 0) y = 4; switch (y) { case 1: return 7; case 2: return 9; case 3: return 3; case 4: return 1; } case 8: y %= 4; if (y == 0) y = 4; switch (y) { case 1: return 8; case 2: return 4; case 3: return 2; case 4: return 6; } case 9: y %= 2; if (y == 0) y = 2; switch (y) { case 1: return 9; case 2: return 1; } } } int main(void) { int t; scanf("%d", &t); while (t--) { scanf("%d", &y); int temp = y % 10; printf("%d\n", ans(temp)); } return 0; }
/*0ms,228KB*/ #include<cstdio> const int ans[20] = { 0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9 }; int main(void) { int T, N; scanf("%d", &T); while (T--) { scanf("%d", &N); printf("%d\n", ans[N % 20]); } }
/*0ms,228KB*/ #include <cstdio> int main(void) { int t, n, p, sum; scanf("%d", &t); while (t--) { scanf("%d", &n); p = n % 10; sum = p; for (int i = 0; i < (n + 3) % 4; i++) sum *= p; printf("%d\n", sum % 10); } return 0; }