我一直坚持这个问题:
给定a,b和c三个自然数(例如1 <= a,b,c <= 10 ^ 9),你应该找到数字a ^ b ^ c的最后一位数."
我首先想到的是用于提高功率n的O(log n)算法.
int acc=1; //accumulator
while(n>0) {
if(n%2==1)
acc*=a;
a=a*a;
n/=2;
}
Run Code Online (Sandbox Code Playgroud)
显然,一些基本的数学可能会有所帮助,比如"最后一位数"的东西:
Last_digit(2^n) = Last_digit(2^(n%4))
Run Code Online (Sandbox Code Playgroud)
其中n%4是除法的剩余部分n/4
简而言之,我试图将这些结合起来,但我无法顺利进行.
一些帮助真的会被贬低.