您的位置:首页 > 其它

HDU 1061 Rightmost Digit

2013-12-20 16:03 267 查看
题解:这道题我们直接考虑数字的最后一位即可,又数字的最后一位最多只有10中情况,所以我们只要模拟最后一位相乘的过程,一旦出现循环,就直接输出下标为这个数字对循环节长度取模的结果的内存即可。

#include <cstdio>
int main()
{
int n;
scanf("%d",n);
while(scanf("%d",&n)!=EOF)
{
int a[100];
bool go=true;
int m=n%10;
int x=n%10;
a[1]=m;
int tot=1;
do
{
m=(m*x)%10;
if (m==a[1])
{
int y=n%tot;
a[0]=a[tot];
printf("%d\n",a[y]);
go=false;
}
else a[++tot]=m;
}
while (go);
}
return 0;
}

注意点:对于取模后为0的情况要特殊判断,注意不要忘记main返回值0,编程时都忘了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: