| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6897 人关注过本帖, 1 人收藏
标题:求10000的阶乘
只看楼主 加入收藏
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
以下是引用Devil_W在2010-5-25 11:41:34的发言:

 
 
先看看你那段垃圾代码还能不能出结果。
 
 
 
这是我的运行时间。
那能贴出您的代码让大家研究研究否?

简单的生活
2010-05-25 11:43
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用smltq在2010-5-25 11:43:49的发言:

那能贴出您的代码让大家研究研究否?
你猜。
2010-05-25 12:13
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
程序员有两类,一类是写出来的,一类是吹出来的。自己的代码都不敢让别人看的程序员是哪种呢……,不扯了,做正事去

简单的生活
2010-05-25 12:18
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用smltq在2010-5-25 12:18:51的发言:

程序员有两类,一类是写出来的,一类是吹出来的。自己的代码都不敢让别人看的程序员是哪种呢……,不扯了,做正事去

哥贴的代码比你发的帖子是要多的。

哥在这里混的时间应该比你长。

哥已经把结果贴出来了,可惜有的垃圾连结果都没有整出来。

PS,你想找哥单挑code,哥愿意奉陪。
2010-05-25 12:25
shiqizhoufan
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-25 12:54
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
smltq 挺沉的住气的 ,/

我就是真命天子,顺我者生,逆我者死!
2010-05-25 18:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
#include<fstream>
#include<iostream>
#include <stdio.h>
using namespace std;
int a[1000000]={0};   /*此处是关键,当将a数组定义在main内时,则超时。在外面可避免超时*/
int main()
{
    int n;
    int i,len=1,j,temp=0;  /*temp为溢出位的溢出量,len为数初始长度*/
    scanf("%d",&n);
    a[0]=1;   /*数的初始值*/
    for(i=2;i<=n;i++)
    {
        for(j=0;j<len;j++)
        {
            a[j]=i*a[j]+temp;   /*求每一位的数的临时乘积*/
            temp=a[j]/10;       /*该位溢出部分*/
            a[j]%=10;            /*去掉溢出部分剩余的值作为该位的最后临时值*/
        }
        while(temp!=0)          /*处理最高位溢出情况*/
        {
            a[j++]=temp%10;
            temp/=10;
        }
        len=j;                   /*求乘完一个阶乘项后数的长度*/
    }
    len+=50-len%50;        /*不足50位,用0补充*/
    ofstream outFile;
    outFile.open("c://test.txt");
    if(outFile.is_open())
    {
        for(i=len-1;i>=0;i--)
        {     
            outFile<<a[i];
        }   
    }
    outFile.close();
    system("Pause");
    return 0;
}

评下这个代码:

//int a[1000000]={0};   /*此处是关键,当将a数组定义在main内时,则超时。在外面可避免超时*/
我就不能理解了,数组a放在main内与main外,与运行时间有什么关系?
估计他是想说, 数组a放在main内, 那么a在栈上分配,会导致栈溢出
而放在main外,a则在静态存储区分配。

//int i,len=1,j,temp=0;  /*temp为溢出位的溢出量,len为数初始长度*/
这么短的代码,命名感觉不合逻辑,
int i, j,len,temp;
len = 1;
temp = 0;

//scanf("%d",&n);
不明白 #include<iostream> 这东西是用来做什么的,?
cin >> n;

//system("Pause");
这不是c里面的东西吧。
看别人都是写 cin.get();

//看不出来这代码有什么优化的地方,?


[ 本帖最后由 BlueGuy 于 2010-5-25 19:08 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-05-25 18:53
瑶瑶追梦
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-25 21:05
jiayou_yatou
Rank: 2
等 级:论坛游民
帖 子:33
专家分:15
注 册:2010-5-17
收藏
得分:0 
  阶乘太大,超出范围了。
2010-05-25 22:06
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
一个傻子来看看。

南国利剑
2010-05-25 23:57
快速回复:求10000的阶乘
数据加载中...
 
   



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

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