1000的阶层 java,1000!阶乘怎么算
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!阶乘怎么算相关推荐
- 1000+道 互联网Java架构师面试题
1000+道 互联网Java架构师面试题 这套 1000+ 道的 Java 面试手册我整理了足足 1 个月,上传到 GitHub 上目前 star 数达到了 30K+ .2022 年的互联网行业竞争越 ...
- PHP 1000只狗,从第一头起算,求最后活着的狗 代码实现
1.如果题目是1000只狗,从第一头起算,每隔一头杀一头(数到底后从第一头重新开始算),最后只留一只是活的,请问这是第几只狗? 2.写入一个数组,不管值是多少,按数组下标进行排除,答案:512 < ...
- 【Java】哈希算法的实现-----Hash
内容目录 哈希结构概述 代码实现 注意问题 HashMap迭代的方式 解决哈希冲突的方式 HashTable和HashMap的联系与区别 java中的四种引用 五道大数据习题 哈希结构概述 1.概念: ...
- 骁龙870和天玑1000+哪个好 天玑1000+和骁龙870对比,哪个更强
骁龙870的整体规格与骁龙865 Plus保持一致,基于7nm工艺打造,并非最新的5nm,CPU采用一个大核心+三个中核心+四个小核心的设计. 手机处理器选骁龙870还是天玑1000+这些点很重要 看 ...
- 计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。帮我写代码...
好的,我可以帮助你写代码.以下是 Python 代码: def calculate_postage(weight, is_urgent):base_fee = 8if weight > 1000 ...
- Java 1000阶乘计算
1000的阶乘使用BigInteger import java.math.BigInteger; import java.util.Scanner;public class Main {public ...
- java 1000个线程_java,一个程序建立1000个线程,每一个线程加1到一个变量sum。
1.程序建立1000个线程,有可能造成系统创建大量线程而导致消耗完系统内存,还会增加创建和销毁线程上所花的时间以及系统资源的开销 2.在创建线程数多的情况下,可以考虑使用线程池 以下是Java自带的几 ...
- 1000种对Java的响应没有死
当一篇评论发表1000条评论时,值得考虑一下. 我上周的社论" 如果Java即将死,它肯定看起来非常健康 "在各个开发人员社区中都感到不安 . 在Reddit,Hacker New ...
- 最新1000道高频Java面试题,包含25个技术栈等面试攻略(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构
每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...
最新文章
- 构造函数以及this
- R语言生成词云(wordcloud)实战
- C++ ,leetcode 43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式
- 【pytorch学习】四种钩子方法(register_forward_hook等)的用法和注意点
- Python:通过SNMP协议获取H3C、华为交换机的VLAN信息及ARP地址表
- opencv waitKey() 函数理解及应用
- 将数据导出到文本文档 mysql
- 【UVALive】3695 Distant Galaxy(......)
- 蒋涛:《Orange’S:一个操作系统的实现》属于真正Hacker的
- Android音频术语
- 游戏史上最伟大的10位制作人
- 使用python PIL 模块合成图片
- nn.functional.normalize
- TFS工作项模板自定义指南
- 如何准备机器学习工程师的面试 ?
- 文献学习(part31)--Discovery of time-inconsecutive co-movement patterns of foreign currencies using ...
- centOS6添加开机启动
- Python科学计算的瑞士军刀——Anaconda 安装与配置
- 浅析c4编译器--一个优秀的编译器是如何生成的
- 模仿微视视频录制、支持按下录制抬起暂停以及断点进度条(基于javacv)