天天看點

hdu 1061 - Rightmost Digit(求N^N末位) Rightmost Digit

Rightmost Digit

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 24345    Accepted Submission(s): 9291

Problem Description Given a positive integer N, you should output the most right digit of N^N.

Input The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.

Each test case contains a single positive integer N(1<=N<=1,000,000,000).

Output For each test case, you should output the rightmost digit of N^N.

Sample Input

2
3
4
        

Sample Output

7
6


   
    
     Hint
    
In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7.
In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
   
        

=======================

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        int m=n%10;//n的個位
        int ans=m,a,flag=0;
        for(int i=1;i<n;i++)
        {
            ans=ans*m%10;
            if(ans==m)
            {
                a=i;//循環節
                ans=1;
                flag=1;
                //cout<<a<<"------"<<endl;
                break;
            }
        }
        if(flag==1)
        for(int i=0;i<=(n-1)%a;i++)
        {
            ans=(ans*m)%10;
        }
        cout<<ans<<endl;
    }
    return 0;
}