HDU 1061 Rightmost Digit

题解:这道题我们直接考虑数字的最后一位即可,又数字的最后一位最多只有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,编程时都忘了。

你可能感兴趣的:(right)