1000! 阶乘怎么算?

在JAVA中,有BigInteger这个类,可以为你解决 . 但是如果是在C++,或者不用这个BigInteger又怎么解决呢?

由于没有C++编译器,所以只能用JAVA来代替一下..

阶乘

6! = 6 * 5 * 4 * 3 * 2 * 1 = 720

1000! = 1000 * 999 * 998 * ... * 1

JAVA代码

public class FactoryN {

public static void main(String[] args) {

/**

* JAVA 自带

*/

System.out.println(fact(1000));

/**

* 自已写

*/

System.out.println(calcFact(1000));

}

/**

* 这是用JAVA BigInteger 处理

*/

public static BigInteger fact(int index) {

BigInteger bigInteger = new BigInteger("1");

for (int i = 1; i <= index; i++) {

bigInteger = bigInteger.multiply(new BigInteger(i + ""));

}

return bigInteger;

}

/**

* 下面是我的方法

*/

public static String calcFact(int fact) {

String res = "1";

for (int i = 1; i <= fact; i++) {

res = calc(i, res);

}

return res;

}

public static String calc(int index, String ms) {

int[] digits = stringArr2IntArr(ms);

List integers = new ArrayList<>();

int carry = 0;

for (int i = 0; i < digits.length; i++) {

int result = digits[i] * index + carry;

integers.add(result % 10);

carry = result / 10;

}

if (carry != 0)

integers.add(carry);

StringBuilder calcResult = new StringBuilder();

for (int i = integers.size() - 1; i >= 0; i--) {

calcResult.append(integers.get(i));

}

return calcResult.toString().trim();

}

public static int[] stringArr2IntArr(String str) {

char[] strings = str.toCharArray();

int[] ints = new int[strings.length];

for (int i = 0; i < strings.length; i++) {

ints[strings.length - i - 1] = Integer.parseInt(strings[i] + "");

}

return ints;

}

}

结果

402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

1000的阶层 java,1000!阶乘怎么算相关推荐

  1. 1000+道 互联网Java架构师面试题

    1000+道 互联网Java架构师面试题 这套 1000+ 道的 Java 面试手册我整理了足足 1 个月,上传到 GitHub 上目前 star 数达到了 30K+ .2022 年的互联网行业竞争越 ...

  2. PHP 1000只狗,从第一头起算,求最后活着的狗 代码实现

    1.如果题目是1000只狗,从第一头起算,每隔一头杀一头(数到底后从第一头重新开始算),最后只留一只是活的,请问这是第几只狗? 2.写入一个数组,不管值是多少,按数组下标进行排除,答案:512 < ...

  3. 【Java】哈希算法的实现-----Hash

    内容目录 哈希结构概述 代码实现 注意问题 HashMap迭代的方式 解决哈希冲突的方式 HashTable和HashMap的联系与区别 java中的四种引用 五道大数据习题 哈希结构概述 1.概念: ...

  4. 骁龙870和天玑1000+哪个好 天玑1000+和骁龙870对比,哪个更强

    骁龙870的整体规格与骁龙865 Plus保持一致,基于7nm工艺打造,并非最新的5nm,CPU采用一个大核心+三个中核心+四个小核心的设计. 手机处理器选骁龙870还是天玑1000+这些点很重要 看 ...

  5. 计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。帮我写代码...

    好的,我可以帮助你写代码.以下是 Python 代码: def calculate_postage(weight, is_urgent):base_fee = 8if weight > 1000 ...

  6. Java 1000阶乘计算

    1000的阶乘使用BigInteger import java.math.BigInteger; import java.util.Scanner;public class Main {public ...

  7. java 1000个线程_java,一个程序建立1000个线程,每一个线程加1到一个变量sum。

    1.程序建立1000个线程,有可能造成系统创建大量线程而导致消耗完系统内存,还会增加创建和销毁线程上所花的时间以及系统资源的开销 2.在创建线程数多的情况下,可以考虑使用线程池 以下是Java自带的几 ...

  8. 1000种对Java的响应没有死

    当一篇评论发表1000条评论时,值得考虑一下. 我上周的社论" 如果Java即将死,它肯定看起来非常健康 "在各个开发人员社区中都感到不安 . 在Reddit,Hacker New ...

  9. 最新1000道高频Java面试题,包含25个技术栈等面试攻略(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构

    每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...

最新文章

  1. 构造函数以及this
  2. R语言生成词云(wordcloud)实战
  3. C++ ,leetcode 43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式
  4. 【pytorch学习】四种钩子方法(register_forward_hook等)的用法和注意点
  5. Python:通过SNMP协议获取H3C、华为交换机的VLAN信息及ARP地址表
  6. opencv waitKey() 函数理解及应用
  7. 将数据导出到文本文档 mysql
  8. 【UVALive】3695 Distant Galaxy(......)
  9. 蒋涛:《Orange’S:一个操作系统的实现》属于真正Hacker的
  10. Android音频术语
  11. 游戏史上最伟大的10位制作人
  12. 使用python PIL 模块合成图片
  13. nn.functional.normalize
  14. TFS工作项模板自定义指南
  15. 如何准备机器学习工程师的面试 ?
  16. 文献学习(part31)--Discovery of time-inconsecutive co-movement patterns of foreign currencies using ...
  17. centOS6添加开机启动
  18. Python科学计算的瑞士军刀——Anaconda 安装与配置
  19. 浅析c4编译器--一个优秀的编译器是如何生成的
  20. 模仿微视视频录制、支持按下录制抬起暂停以及断点进度条(基于javacv)

热门文章

  1. Android 设备获取物理唯一标识码
  2. 【原生JavaScript案例】拖拽回弹吸附 猜成语小游戏
  3. AutoHotkey用法教程(Chinar强烈推荐学习)
  4. 传奇代码研究 极品机率...
  5. svg实现直线带双向箭头
  6. python画卡通人物_python pyqt5 卡通人物形状窗体
  7. linux查看硬件资源命令
  8. Optional判空操作
  9. android spinner 简书,Android NiceSpinner
  10. WPF 控件专题 Lable 控件详解