7 66 8 800
9 6
题目大意:求x^n的末尾;
题解:证明得 ,只与x的个位有关, 相乘后也只和个位有关;
所以一定有规律or快速幂;
一:(打表法)
#include <bits/stdc++.h> using namespace std ; int dir[10][4]={{0},{1},{6,2,4,8},{1,3,9,7},{6,4},{5},{6},{1,7,9,3},{6,8,4,2},{1,9}}; int main() { int a , b; while(cin>>a>>b) { int d = a % 10 ; if(d==0||d == 1 || d==5||d==6) printf("%d\n",d); else if(d==4||d==9) printf("%d\n",dir[d][b%2]); else if(d==2||d==3||d==7||d==8) printf("%d\n",dir[d][b%4]); } return 0 ; }
个位可以看做为:x^n%10;
#include <bits/stdc++.h> using namespace std ; int kkk(int a , int b , int n ) { a%=n;//*取个位 int ans ; ans = 1 ;//*定位 while(b>0) { if(b%2==1) ans = ans*a%n; //*如果是奇数幂 ,则乘后变为偶次幂 ; b/=2; //*x^n 一定可以由 (x^2/n)^2得到; a = a*a%n;//*更新个位 } return ans ; } int main() { int a , b ; while(cin>>a>>b) { printf("%d\n",kkk(a,b,10)); } return 0; }