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,编程时都忘了。
愿你出走半生,归来仍是少年