您的位置:首页 > 其它

toj2034 Just the Facts

2013-09-15 15:45 183 查看
题目链接:http://acm.tju.edu.cn/toj/showp2034.html

题目大意:输出阶乘最后一个不是0的数。

思路:此题考查点有两个:(一 )输出格式  setw(5) 右对齐;(二 )怎么样才能不超时,除了每次乘时就除去0之外,还应该每次只保留后5位,因为最大为10000,必须至少保留后5位;如果不作这步,会超时。 ps:setw(n)的头文件为 iomanip

代码:

//toj2034求阶乘的末尾最后一个不是0的数

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int n,i;

    long long sum;

    while(cin>>n)

    {

       sum=1;

       for(i=1;i<=n;i++)

       {

           sum=sum*i;

           while(sum%10==0)

           { sum=sum/10;}

            sum=sum%100000; //每次只保留后五位   这样可大大减小计算量 因为至多为10000 所以除以100000;  
                

       }

       cout<<setw(5)<<n<<" -> "<<sum%10<<endl; 

    }

    return 0;

}

也做过其他阶乘的题目  后面会陆续上传

ps:刚刚在网上看到有个哥们儿用DP做的  留着 http://blog.sina.com.cn/s/blog_6a84c1d30100lced.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM 阶乘