T^T問題(生氣易爆炸的T的T次方最後一位數)

JJJeeerryy發表於2018-11-25

T^T問題(生氣易爆炸的T的T次方最後一位數)
Description
T^T 這個很像一個流淚的表情是不是!其實,它是T的T次方啦~。當T比較大的時候T^T會非常大,現在只要你求這個數的個位就可以啦!

Input
輸入包括多組測試資料,每個測試資料只有一個數字T(0<T<2^31)

Output
請輸出T^T的個位數
Sample input 1
1
2
3
105
Sample output 1
1
4
7
5

題目的意思是輸入一個數T 求T^T的最後一位數,為了好區分寫成T(0) ^T(1),因為只求尾數,所以在T(0)這個數上只與T(0)的尾數有關,其餘位上的數計算完只會影響更高位的數,所以T(0) ^T(1)中的T(0)可以直接%10,只保留個位(假設個位數為c),這樣就變成了求c ^T(1)的尾數,經過計算可以發現規律,c如果等於1,5,6,那無論冪為多少,尾數均仍為1,5,6;c如果等於4,9,那麼冪每增加2,尾數會變回4,9;c如果等於2,3,7,8,那麼冪每增加4,尾數會變回原來的數字。這樣9個數如果經過計算冪每增加4,尾數都會變回成為原來的數字,所以我們可以直接將T(1)%4 (這裡要注意 如果冪為4的倍數取餘會出現0,結果會出現1,答案是錯誤的,我們可以直接理解為是c的四次方),假設T(1)%4結果是r,我們要求的即為 c ^r的尾數。

#include<stdio.h>
#include<math.h>
int main()
{
    int T,c,r,d;
    while(scanf("%d",&T)!=EOF)
    {
    c=T%10;
    r=T%4;
    if (r==0) r+=4;
    d=pow(c,r);
    d%=10;
    printf("%d\n",d);
    }
    return 0;
}

相關文章