大数阶乘

编程之家收集整理的这篇文章主要介绍了大数阶乘编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

大数阶乘

http://acm.nyist.net/JudgeOnline/problem.php?pid=28

时间限制:3000 ms  |  内存限制:65535 KB

难度:3

输入

输入一个整数m(0<m<=5000)

输出

输出m的阶乘,并在输出结束之后输入一个换行符

样例输入

50

样例输出

30414093201713378043612608166064768844377641568960512000000000000

描述

我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?

 

我的代码

#include <stdio.h>
//5000!大概是一万六千为左右
#define MAX 20000
char res[MAX];//char 本质上也是一个数字,可以运算,由于是全局变量,所以已经初始化为0
int main(int argc,char*argv[]){
    int i,j = 0,n,digit = 0,t;//进位
    scanf("%d",&n);
    res[0] = 1;//阶乘由1开始,数字的低位在数组的下标低位
    int length = 1;//数字长度为1
    for (i = 2; i <= n; i++){//由2开始乘
        digit = 0;
        for (j = 0; j < length; j++){
            t = res[j] * i + digit;
            if (j == length - 1 && t >= 10) //如果数字的最高位还需进位,长度加一
                length++;
            digit = t / 10;
            res[j] = t % 10;
        }
    }

    //倒序输出
    for (i = length - 1; i >= 0; i--)
        printf("%d",res[i]);
    printf("\n");
    return 0;
}

 

 

题目推荐代码

#include <stdio.h>
#include <string.h>
const int maxn = 20000;
int a[maxn];
int main(){
    int n,i,j,s,c;
    scanf("%d",&n);
    memset(a,sizeof(a));
    a[0] = 1;
    for (i = 2; i <= n; i++){
        c = 0;
        for (j = 0; j <= maxn; j++){
            s = a[j] * i + c;
            a[j] = s % 10;
            c = s / 10;
        }
    }
    for (j = maxn; j >= 0; j--) if (a[j]) break;
    for (i = j; i >= 0; i--) printf("%d",a[i]);
    printf("\n");
    return 0;
}

总结

以上是编程之家为你收集整理的大数阶乘全部内容,希望文章能够帮你解决大数阶乘所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群:1065694478(已满)
编程之家官方2群:163560250(已满)
编程之家官方3群:312128206(已满)
编程之家官方4群:230427597

相关文章

猜你在找的大数据相关文章

###windows下链接hadoop集群 1、假如在linux机器上已经搭建好hadoop集群 2、在windows上把hadoop的压缩包解压到一个没有空格的目录下,比如是D盘根目录 3、配置环境
1、zookeeper的安装##配置/etc/hosts192.168.88.130 lgh192.168.88.131 lgh1192.168.88.132 lgh2 ##安装java8 解压配置环
一、迁移背景 服务器出了问题,导致整个cm server界面呈现出不可用的状态,也就是获取不到各个大数据组件以及主机相关的状态的信息,整个cm server的前端界面处于瘫痪的状态,不可用,刚开始怀疑
在前面一篇文章中(hadoop2.7之作业提交详解(上))中涉及到文件的分片。 JobSubmitter.submitJobInternal方法中调用了int maps = writeSplits(j
根据wordcount进行分析: 这上面是个简单wordcount的代码,这里就不一一说明了,我们首先看main方法:获取一个job对象,然后经过一系列的设置,最后调用waitForCompletio
Apache YARN(Yet Another Resource Negotiator)是一个Hadoop集群资源管理系统。YARN是在Hadoop 2引入的,用以改善MapReduce的表现。但是它
数据流 读取文件数据的剖析 为了知道客户端与HDFS,NameNode,DataNode交互过程中数据的流向,请看图3 2,这张图显示了读取文件过程中主要的事件顺序。 客户端通过调用FileSyste
Hive支持自定义map与reduce script。接下来我用一个简单的wordcount例子加以说明。 如果自己使用Java开发,需要处理System.in,System,out以及key/val