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;
}
浙公网安备 33010602011771号