題意:給出兩個正整數m,n(0<=m,n<=10^101),求m^n的最後一位數
思路:找規律,對於m的話只需考慮個位數就行,個位數不會因相乘的進製而發生變化,對於指數n打表發現2,3,7,8都是以每四個連續次方乙個迴圈,4和9以2為迴圈
所以取m的最後一位k,n取最後兩位d(判斷正整數能否整除4取最後兩位就行,很好證明),m^n的的最後一位數字為:
ans = (k^p)%10
p = d%4 == 0 ? 4 : d%4;
擴充套件知識點:
如何判斷乙個非常大的數n(超出long long)能否被乙個很小的m整除?
遞推:\
s[0] = 0;
s[i] = (s[i-1]*10 + a[i]) % m;
最後判斷s[n.length-1]是否等於0即可
#include using namespace std;
int main()
{#ifdef xxz
// freopen("in","r",stdin);
#endif // xxz
string m, n;
while(cin>>m>>n,m+n != "00")
{int k = m[m.length()-1] - '0';
int d = ( n.length() == 1 ? n[0] : n[n.length() - 2]*10 + n[n.length()-1] ) - '0';
int p = d%4 == 0 ? 4 : d%4;
int ans = pow(k,p);
cout<
求T T的個位數
border 0 width 0 height 0 src 求t t的個位數 description 這個很像乙個流淚的表情是不是!其實,它是t的t次方啦 當t比較大的時候t t會非常大,現在只要你求這個數的個位就可以啦!input 輸入包括多組測試資料,每個測試資料只有乙個數字t 0首先,這個題肯...
T T問題求個位數(快速冪 位運算 找規律)
t t這個很像乙個流淚的表情是不是!其實,它是t的t次方啦 當t比較大的時候t t會非常大,現在只要你求這個數的個位就可以啦!輸入包括多組測試資料,每個測試資料只有乙個數字 看到只取個位數,第一反應找規律,末尾數相當於是乙個迴圈,只要找 出迴圈規律即可,簡單粗暴。try while 1 n inpu...
各種車牌的 vin 各個位數解析
第一位 value country 中文名 1,4 or 5 united states 美國 2canada 加拿大 3 mexico 墨西哥 6 australia 澳大利亞 9 brazil 巴西 jjapan 日本 kkorea 南韓 lchina 中國 rtaiwan 中國台灣 s eng...