Rightmost Digit

Problem Description

Given a positive integerN, you should output the most right digit of N^N.

Input

The input containsseveral test cases. The first line of the input is a single integer T which isthe 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, youshould 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

 代码如下:

1:C语言

#include

int n,tt,f,i,t;

int main()

{

 while(scanf("%d",&t)!=EOF)

 {

 while(t--)

  {

  scanf("%d",&n);

   f=n%10;

  if(n%4==0)

   {

   n=4;

   }

  else n%=4;

  tt=1;//然后计算f的n次

  for(i=0;i

   {

   tt=tt*f;

   }

  printf("%d\n",tt%10);

  }

 }

 return 0;

}

 ps:这道题目有规律,题目只要求输出最后一位,所以我们只关注最后一位

阿拉伯数字的神奇之处就是可以只用十种数字就可以表示出无数的数字

1.先来看1的情况,1的n次都为1,所以1的次幂的个位有最小周期1

 2.再来看2的情况,2的n次,个位依次位2,4,8,6,2……看到最小周期是4

 归纳以下可得任何数的n次幂的个位都有一个周期是4

 2:c++

#include

#include

#include

using namespace std;

long long A(long long a)

{

  long long  int t=1,b=a,base=a;

   while(b)

    {

       if(b&1)

           t=t*base%10;

           base=base*base%10;

       b/=2;

    }

   return t;

}

int main()

{

  long long a,t;

  cin>>t;

  while(t--)

   {

      cin>>a;

  cout<

   }

  return 0;

}

你可能感兴趣的:(C语言)