杭电1061题

//求N^N的个位数
//思路:只计算个位数的乘积,个位数最后形成一个循环
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
 int num;
 cin>>num;
 for(int i=0;i<num;i++)
 {
  vector<int> digit;
  int int_data;
  string data;
  cin>>data;
  //利用string类型获得输入的个位数字
  int right_digit = data[data.size ()-1]-'0';
  //将string类型转化为int类型
  int_data = atoi(data.c_str ());
  digit.push_back (right_digit);
  int sum = right_digit;
  for(int j=0;j<int_data;j++)
  {
   sum *= right_digit;
   if(sum%10==digit[0])
    break;
   digit.push_back (sum%10);
  }
     int m = int_data % digit.size ();
     if(m == 0)
      cout<<digit[digit.size ()-1]<<endl;
  else
   cout<<digit[m-1]<<endl;
 }
 return 0;
}

posted @ 2010-04-25 20:40  北海小龙  阅读(311)  评论(0编辑  收藏  举报