functionmod10( num ) { returnparseInt(num) % 10; }
思路1.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
functionlastDigitQuickPow(str1, str2) { let x = mod10(str1); // x直接取最后一位 let n = parseInt(str2); // 可能涉及大数,转成BigInt if (n === 0) { return1; // 任何数的0次方都是1 } let res = 1; for (let i = x; n; i = mod10(i * i), n = n >> 1) { // 每次使i平方,然后n减少一位二进制位(位右移) if ((n & 1) == 1) { res = mod10(res * i); // 如果当前位是1,则在结果中增加 } } return res; }