UVA 10515(求m n的個位數)

2021-07-03 11:48:42 字數 799 閱讀 9109

題意:給出兩個正整數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...