51Nod 1004 n^n的末位數字


 

思路:首先將0~9的平方的尾數放在一個數組a裏面,方便後面直接調用,由於不論多大的數作什麼運算,獲得的結果的最後一位數只和運算前全部數的最後一位數有關係。新建變量d,z一個是底數,一個是冪次。循環判斷(若是z大於2的話循環繼續),在循環內第一步先把底數對10取餘數,而後分奇偶討論,若是是奇數:temp(初試爲1) = (temp*d)%10; 這是這個題目的一個點,若是一個冪次是奇數,那麼就要把他冪次變爲偶數,而後保存底數的一次冪與temp中,最後再與d相乘取餘便可,代碼以下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n; cin>>n;
    int a[10] = {0,1,4,9,6,5,6,9,4,1};// i^2 remainder
    int d,z;
    d = z = n;
    int ans,temp=1;
    while(z> 2)
    {
        d%= 10;
        if(z%2!=0)
        {
            temp = (temp*d)%10;
        }
            d = a[d];
            z= z/2;
    }
     ans = (d*temp)%10;
    cout<<ans;

}

若是哪裏出錯了還但願你們指出,畢竟我也只是個菜鳥鴨,謝謝你們啦!c++

相關文章
相關標籤/搜索