求N!最后非0位 O(N log N)

来源:互联网 发布:java 两张图片合成 编辑:程序博客网 时间:2024/05/22 21:33

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1594

直接上代码,此题直接当作模题就好了,感觉不怎么好理解。看了几遍,还是不太能理解。先放这里吧。

吉林大学模版:

#include<bits/stdc++.h>#define maxn 10010using namespace std;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 a[maxn];int lastdigit(char *s){    int len=strlen(s);    if(len==1) return mod[s[0]-'0'];    for(int i=0;i<len;i++) a[i]=s[len-1-i]-'0';    int res=1;    while(len){        res=res*mod[a[1]%2*10+a[0]]%5;        for(int i=len-1,j=0;i>=0;i--)            j=j*10+a[i],a[i]=j/5,j%=5;        len-=!a[len-1];    }    return res+res%2*5;}char s[maxn];int main(){    int T;cin>>T;    while(T--){        scanf("%s",s);        cout<<lastdigit(s)<<endl;    }    return 0;}


0 0
原创粉丝点击