算法训练 P0505

题解:由于求的是最右边那个非0数,所以只需要关注末尾的数,如果有0就去掉,然后取最后的几位数,在乘下一个数,继续判末尾是否有0去掉,然后取最后几个数,一直循环到结束。输出最后一个数。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,sum=1,ans;
    cin>>n;
    for(int i=2; i<=n; i++)
    {
        sum*=i;
        while(sum%10==0)
        {
            sum/=10;
        }
        sum%=10000;
        ans=sum%10;
    }
    cout<<ans<<endl;
    return 0;
}

 

相关文章: