| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5321 人关注过本帖
标题:求1到25的阶乘和,结果是16158688114800553828940313 但是程序不会写!谢谢 ...
只看楼主 加入收藏
aixinjueluo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-10
收藏
 问题点数:0 回复次数:23 
求1到25的阶乘和,结果是16158688114800553828940313 但是程序不会写!谢谢谢谢谢谢
搜索更多相关主题的帖子: 结果 阶乘 
2008-11-16 18:19
aixinjueluo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-10
收藏
得分:0 
那个问题吧?有点难!明天问问老师吧 。。。。。。。
2008-11-16 18:47
hack绝望
Rank: 1
来 自:广东肇庆
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-11-5
收藏
得分:0 
这么长的数据~~~~

不会~~~

算阶层和倒不是难题~~~~

难在数据会溢出~~~~

不会啥~~~~
2008-11-16 18:54
hack绝望
Rank: 1
来 自:广东肇庆
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-11-5
收藏
得分:0 
#include<stdio.h>
long double f(int n)
{ long double a=1;
    int i;
   for(i=1;i<=n;i++)
    {
     a=a*i;
    }
    return(a);
}
main()
{
  long double a=0;
  int i,j,n;
  printf("PLEASE INPUT A INTEGER!\n");
  scanf("%d",&n);
  for(i=1;i<=n;i++)
    a=a+f(i);
                         printf("%ld",a);  //请问如果用long double 输出格式应该写啥啊?"%lf" ???   不懂~~~书上也没说~~~~ ,如果不用long double型long int型又不够位数,遇到这些问题咋办啊?
}
2008-11-16 19:12
jay6254825
Rank: 1
来 自:江西师范大学软件
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-11-14
收藏
得分:0 
如果没记错的话就是%f吧!

                                       我是J!~~
2008-11-16 19:52
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
其实就是个简单的高精度……

程序代码:
#include <stdio.h>

long a[1000] = {1}, s[1000] = {1};
int alast = 0, slast = 0;

int main(void)
{
    int n = 25, t;
    for (t = 2; t <= n; t++)
    {
        int i, tmp;
        for (tmp = i = 0; i <= slast; i++)
        {
            tmp += s[i] * t;
            s[i] = tmp % 10000;
            tmp /= 10000;
            if (i == slast && tmp != 0)
                slast++;
        }
        if (alast < slast) alast = slast;
        for (tmp = i = 0; i <= alast; i++)
        {
            tmp += a[i] + s[i];
            a[i] = tmp % 10000;
            tmp /= 10000;
            if (i == alast && tmp != 0)
                alast++;
        }
    }
    printf("%ld", a[alast]);
    for (t = alast - 1; t >= 0; t--)
        printf("%04ld", a[t]);
    putchar('\n');
    return 0;
}


[[it] 本帖最后由 风居住的街道 于 2008-11-16 19:59 编辑 [/it]]
2008-11-16 19:56
linjiangke
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-17
收藏
得分:0 
#include<stdio.h>
int f(int n)
{if(n==1)  return 1;
    else return n*f(n-1);
}
main()
{int n,i=1;
 double m=0,s=0;
    
    scanf("%d",&n);输入小的数才可以  你要求输出色数太大了
    
    for(i=1;i<=n;i++)
    {m=f(i);
        s+=m;
        }printf("%lf",s);
    }
2008-11-17 16:06
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
[bo][un]linjiangke[/un] 在 2008-11-17 16:06 的发言:[/bo]

#include
int f(int n)
{if(n==1)  return 1;
    else return n*f(n-1);
}
main()
{int n,i=1;
 double m=0,s=0;
    
    scanf("%d",&n);输入小的数才可以  你要求输出色数太大了
    
    for(i=1;i

老师要你考试八十分,你说考二十分差不多,八十分太高了……
2008-11-17 17:39
陆离
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-7
收藏
得分:0 
这个简单
定义一个大容量的一维数组,每次进位就可以了!
2008-11-17 20:21
leekyy
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-11-11
收藏
得分:0 
#include<stdio.h>
main()
{
  long double sum=0,b=1;
  int j,m;
  printf("PLEASE INPUT A INTEGER!\n");
  scanf("%d",&m);
  for(j=1;j<=m;j++)
  {
      b=b*j;
      sum+=b;
  }
  printf("%f",sum);
}
2008-11-17 20:57
快速回复:求1到25的阶乘和,结果是16158688114800553828940313 但是程序不会写! ...
数据加载中...
 
   



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

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