标签:blog os io ar 2014 log amp sp on
题目:计算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; }
标签:blog os io ar 2014 log amp sp on
原文地址:http://blog.csdn.net/mobius_strip/article/details/38779329