| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:1W以内整数阶乘。
取消只看楼主 加入收藏
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
结帖率:100%
收藏
 问题点数:0 回复次数:1 
1W以内整数阶乘。
能实现1W以内整数阶乘,并以50位一行输出,代码未优化,时间为5秒以内。
#include<math.h>
#include<stdio.h>
void main()
{
    int a[6000]={0},c[6000]={0},d[6000]={0},b[2];
    int n,i,m,h,e,k,x,y=0;
    a[0]=1;
    int g=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {   
        h=0,e=0,k=0;
        b[0]=i%10;
        d[0]=0;
        b[1]=(i-i%10)/10;
        for(m=0;m<5999;m++)
        {
            c[m]=(a[m]*b[0]+h)%10;
            h=(a[m]*b[0]+h-(a[m]*b[0]+h)%10)/10;
            d[m+1]=(a[m]*b[1]+e)%10;
            e=(a[m]*b[1]+e-(a[m]*b[1]+e)%10)/10;
            a[m]=(c[m]+d[m]+k)%10;
            k=(c[m]+d[m]+k-(c[m]+d[m]+k)%10)/10;
        }    
    }
    m=5999;
    h=1,k=0;
    while(m>=0)
    {
        if(a[m]==0)
        {
            while(h){
                m--;
                if(a[m]>0)
                {
                    h=0;
                    x=m;
                    if((x+1)%50==0)
                    {
                        e=1;
                    }
                    else
                    {
                        y=50-(x+1)%50;
                        while(y>=1)
                        {
                            printf("0");
                            y--;
                            k++;
                        }
                    }
                }
            }
        }
        printf("%d",a[m]);
        k++;
        if(k%50==0)
            printf("\n");
        m--;

    }
    
}
搜索更多相关主题的帖子: 整数 阶乘 
2008-12-04 13:10
dillon
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-6
收藏
得分:0 
VC。TC没试过
2008-12-04 13:19
快速回复:1W以内整数阶乘。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015391 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved