0
点赞
收藏
分享

微信扫一扫

Rightmost Digit  hdoj   1061

#include <iostream>
using namespace std;
int ee(string s,int n) //计算循环最后的结果
{
int a;
if(s.length()==1)
a=int(s[0]-'0');
else
{
a=(int)(s[s.length()-2]-'0'); //一般尾数最多是4个或2个一循环,所以n的值最大为4,所以先取被除数的后两位,再被n取摸.....
}
return a%n;
}
void ss(string n)
{
int a[9];
int na=(int)(n[n.length()-1]-'0'); // 取个位
int temp=na,local;
a[0]=na;
for(int i=1;i<9;i++)
{
a[i]=(temp*na);
temp=a[i];
if(a[i]==na)
{
local=i;
break;
}
}
temp=ee(n,local); //查看有多少个循环
if(temp==0)
cout<<a[local-1]<<endl;
else
cout<<a[temp-1]<<endl;
}
int main()
{
int T;
string a;
cin>>T;
while(T--)
{
cin>>a;
ss(a);
}
return 0;
}

举报

相关推荐

0 条评论