发现一个异常 2017-01-20 05:28 采纳率: 0%
浏览 2652

如何用C语言实现1000的阶乘

求大神解决?
或者告诉我应该解决什么问题?
怎样解决?
(学生一枚,求大神帮忙解决,!)

  • 写回答

8条回答 默认 最新

  • 强化脑细胞 2017-01-20 10:22
    关注

    大数的问题:用字符数组去存储值
    #include
    #include
    #include
    #include
    #include
    #define maxs 10000
    //数组的设置的大小,不能开太大,这样的话扫描的时间太长会超时,也不能太小。。。。
    using namespace std;
    int a[maxs];
    int main()
    {
    int n,i,j,y;
    while(scanf("%d",&n)!=EOF)
    {
    memset(a,0,sizeof(a));//把数组全部设置为0
    for(i=1,a[maxs-1]=1;i<=n;i++)//数组的高位存放数的低位,把最低位置成1,从1乘到n
    {
    y=0;//余数
    for(j=maxs-1;j>=0;j--)
    {
    a[j]=a[j]*i+y;
    y=a[j]/10000;//得到乘法之后的结果
    a[j]=a[j]%10000;//得到进位
    }
    }
    for(i=0;i<maxs;i++)//从左到右扫描,第一个不是0的跳出
    if(a[i])break;
    printf("%d",a[i++]);//输出第一个不是0的
    for(j=i;j<maxs;j++)
    printf("%04d",a[j]);//注意中间的数字,比如12,由于在数的中间要输出0012
    printf("\n");
    }
    return 0;

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置