题目链接:戳这里

题目大意:输入N求N的阶乘的准确值。N(1 <= N <= 10000)

思路:

显然,10000的阶乘用什么也没法存下。这是个大数问题。

而且还要考虑一个问题  我们如果套大数相乘模板  就增加了乘法的复杂度 可能会超时(没试,不知道)

在网上学习了一个很巧妙的写法  数组分块模拟大数乘法 

主要原理呢 是由于乘法运算的封闭性,所以将大数划分后从低位依次相乘并且保证进位,就可以模拟大数的乘法了(我自己瞎总结的~~)

但是我觉得这个方法对于大数乘小数蛮适合的  但是当两个大数的时候  就没法做了(可能是我理解不深  反正我不会~~~)

所以 两个大数的话  我觉得最好还是用java (下面给的有java代码)

而这道题呢 求阶乘  另一个数不会大于10000  刚好是大数乘小数

数组模拟的代码

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const long long maxn=1e8;
typedef long long ll;
int i,j,c,n,m;
ll a[10000];
int main(){scanf("%d",&n);a[0]=1;for(int i=1;i<=n;i++){c=0;//c表示每八位进行相乘时候的进位for(int j=0;j<=m;j++){//用循环来让数组中存储的数实现每八位相乘a[j]=a[j]*i+c;c=a[j]/maxn;//计算进位a[j]=a[j]%maxn;//更新数组的存储}if(c>0){m++;//m代表目前计算的答案占用了几个空间a[m]=c;}}printf("%lld",a[m]);//先输出前面的 这个不用补足八位for(i=m-1;i>=0;i--)printf("%08lld",a[i]);//不足八位的补0printf("\n");return 0;
}

下面给出java代码

import java.io.*;
import java.util.*;
import java.math.*;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(new BufferedInputStream(System.in));int n;n=cin.nextInt();BigInteger ans;ans=BigInteger.ONE;for(int i=1;i<=n;i++){ans=ans.multiply(BigInteger.valueOf(i));}cin.close();System.out.println(ans);}
}

51nod1057-大数阶乘相关推荐

  1. NYOJ 28 大数阶乘

    大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0& ...

  2. 大数运算(7)——大数阶乘(求阶乘)

    对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大. 就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值.这时候,我们要通 ...

  3. 高精度加法(非负)和大数阶乘及和汽水问题

    高精度加法(非负)和大数阶乘 文章目录 高精度加法(非负)和大数阶乘 一.问题描述 二.代码 三.问题描述 四.代码 五.问题描述 六.代码 一.问题描述 二.代码 #define _CRT_SECU ...

  4. NYOJ 27 大数阶乘

    大数阶乘 时间限制:3000ms  |  内存限制:65535KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0< ...

  5. 精度计算——大数阶乘

    精度计算--大数阶乘 摘自一个 ACM函数模板 ,学习记录自己的理解(^U^)ノ~YO 语法:int result=factorial(int n) 参数:n: n的阶乘 返回值:阶乘的结果 注意: ...

  6. java大数类阶乘_Java中的大数阶乘

    java大数类阶乘 It is not possible to store factorial for large number like 50 into inbuilt data types lik ...

  7. 阶乘之和 大数阶乘之和

    情况一:不考虑大数的情况 算法思想:直接上代码,简单易懂. 代码描述: int fac(int n){int p=1, sum=0;for(int i=1; i<=n; i++){p = p*i ...

  8. c语言大数阶乘详细,大数阶乘(c语言)

    大数阶乘.代码比较简单. #include #include #define MAXN 25000 // 如果你的阶乘N比较大,建议大一点 int result[MAXN]; int main() { ...

  9. c语言大整数阶乘计算器,大数阶乘_yuanmercu_oxxdl_新浪博客

    菜鸟篇 程序1,一个最直接的计算阶乘的程序 #include "stdio.h" #include "stdlib.h" int main(int argc, ...

  10. c语言———大数阶乘

    在我们求阶乘时,如果要求的阶乘数大于16时,一般的方法就行不通了,一般求阶乘,都是用int来储存阶乘那个数,但是int范围有限,所以就有一种新的方法,使用数组,简单的说就是用数组储存每位数,比如123 ...

最新文章

  1. SQL SERVER中直接循环写入数据
  2. Understanding Generative Adversarial Networks (GAN)
  3. 0001-Two Sum(两数之和)
  4. SPF难以解决邮件伪造的现状以及方案
  5. iOS中监测来电方案
  6. Android中创建自己的对话框
  7. 设置header_Nginx的这些安全设置,你都知道吗?
  8. php fuzzy,模糊C均值聚类算法(Fuzzy C-means)
  9. CentOS 5 上安装git
  10. 【体系结构】Oracle的各种文件及其重要性
  11. 华为OJ-奥运会排行榜C++
  12. 在QT中配置snap7库
  13. 如何免费下载百度文库的文档!!!!!!!
  14. 3.7V转12V2A 15V2A 大功率升压芯片 拉杆音响专用升压芯片
  15. Sublime Text 比较2个文件不同
  16. MFC去掉窗口右上方最大化最小化关闭按钮
  17. wallhaven.cc网站图片超清壁纸爬虫
  18. 使用ASF在Ubuntu下实现Steam云挂卡
  19. Dashboard Design 4.0(Xcelsius)数据直接绑定功能:瑕瑜互见
  20. 【论文笔记 | TGRS 2021】多内容互补网络:MCCNet

热门文章

  1. 正则表达式-2-正则表达式实战1
  2. apt-get install
  3. 【RAC】 RAC For W2K8R2 安装--创建ASM磁盘组(六)
  4. apper安卓×××
  5. 从中报危机看创业板:谁在兜售“上市经济”?
  6. java IO 超详细讲解
  7. matlab GUI 设计
  8. Tinker在sdk升级后无法成功打补丁包的问题
  9. 分享一个自己写的py扫描路径工具
  10. C# 使用 Task 替换 ThreadPool ,异步监测所有线程(任务)是否全部执行完毕