题目:计算n^m 的最后一位。
分析:数论。结果的最后一位,只与n最后一位有关,而0~9的幂都是以2或4为循环周期的。
计算m模4的余数r和n的尾数k,则k^r就是结果。
说明:其实也可以用快速幂,不过这个更快(⊙_⊙)。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
int value[10][4] = {
0,0,0,0,
1,1,1,1,
6,2,4,8,
1,3,9,7,
6,4,6,4,
5,5,5,5,
6,6,6,6,
1,7,9,3,
6,8,4,2,
1,9,1,9};
int main ()
{
char a[104],b[104];
while (scanf("%s%s",a,b) && (strcmp(a,"0")||strcmp(b,"0")) ) {
if ( !strcmp(b, "0") ) {
printf("1\n");
continue;
}
int v = b[strlen(b)-1]-'0';
if ( strlen(b) > 1 )
v += (b[strlen(b)-2]-'0')*10;
printf("%d\n",value[a[strlen(a)-1]-'0'][v%4]);
}
return 0;
}