HDU 1066 阶乘最后非零位 应用acm模板

来源:互联网 发布:htc vive2代 知乎 编辑:程序博客网 时间:2024/05/16 03:02

模板的第一程序,直接应用。

#include<stdio.h>  #include<string.h>  #define maxn 10001  const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int lastdigit(char buf[])  {  int len=strlen(buf),a[maxn],i,c,ret=1;  if(len==1)return mod[buf[0]-'0'];  for(i=0;i<len;i++)  a[i]=buf[len-1-i]-'0';  while(len)  {  ret=ret*mod[a[1]%2*10+a[0]]%5;  // % 优先级比 * 高for(c=0,i=len-1;i>=0;i--)  {  c=c*10+a[i],a[i]=c/5,c%=5;  }  len-=!a[len-1];  }  return ret+ret%2*5;  }  int main()  {  char  n[maxn];  while(scanf("%s",n)!=EOF)  {  printf("%d\n",lastdigit(n));  }  return 0;  }  



原创粉丝点击