UVA 10515 - Powers Et Al.
题目链接
题意:求出m^n最后一位数
思路:因为m和n都非常大,直接算肯定是不行的,非常easy想到取最后一位来算,然后又非常easy想到最后一位不断乘自身肯定会形成周期。而且这个周期还挺短的,于是先求出周期,然后用n去取模该周期求出答案是第几个就可以
代码:
#include <stdio.h>
#include <string.h>int t[10];
int save[10][10];
char n[105], m[105];int solve(int num) {int lenn = strlen(n);int mod = 0;for (int i = 0; i < lenn; i++) {mod = (mod * 10 + n[i] - '0') % num;}mod--;if (mod < 0) mod = num - 1;return mod;
}int main() {for (int i = 0; i < 10; i++) {int tmp = i;save[i][t[i]++] = i;tmp = tmp * i % 10;while (tmp != i) {save[i][t[i]++] = tmp;tmp = tmp * i % 10;}}while (~scanf("%s%s", m, n)) {if (strcmp(m, "0") == 0 && strcmp(n, "0") == 0) break;int start = m[strlen(m) - 1] - '0';printf("%d\n", save[start][solve(t[start])]);} return 0;
}