问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++大数阶乘算法改良

发布网友 发布时间:2022-04-22 22:05

我来回答

1个回答

热心网友 时间:2023-07-06 06:42

largeint.h没有重载operator*,所以最后只能用加法来算阶乘。

理论上如果你重载了乘法运算的话时间复杂度会缩小为O(NlogN)。

至于说到如何修改,因为你的程序使用了vector容器,就要复杂一点。
由于我完全不会使用vector来进行高精度运算,代码我就不实现了。

如果要详细一点的话,
其一,largeint.h部分,不需要改动原来的代码,但是必须增加一个乘号的重载。具体地说就是你需要再写一个LargeInt类的子函数LargeInt operator*(const Largeint&) const,作用是把(*this)和arg相乘。

其二,主程序部分,factorial函数应该改成这样:
LargeInt factorial(LargeInt::inputtype n)
{
LargeInt result(1);
for (LargeInt::inputtype i = 2 ; i <= n ; ++i)
result = result * LargeInt(i);
return result;
}追问谢谢了我去试试看

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
无线生活台频道介绍 高赋码给产品做的“身份证”好吗? 包头市康钱工贸有限公司怎么样? 混凝土裂缝分类有哪些 混凝土裂缝种类及成因有哪些? 混凝土微观裂缝有哪些 水泥混凝土裂缝有哪些 智能制造工程专业要学哪些课程 智能制造工程大一学什么 智能制造工程专业主要学什么课程 亿以上的大数改写成用万做单位后,怎样读? Vista如何修改网络连接最大数 如何把科学计数法复原回大数? 怎样更改电脑硬盘分区最大数 大数的改写直等于怎么改写 请问如何在EXCEL表格中设置最大数与最小数,如输错不能输入或有提示 C++编程,如何处理大数的问题? 如何修改分区最大数? 怎样将一个大数改成用万或亿作单位的数? 电脑显示器两边有黑边怎么办? 电脑屏幕两边有黑边是怎么回事,怎么改回全屏啊,急急急!! 电脑的屏幕两边有黑边是为什么? 我的电脑屏幕两边都有黑边,是为什么啊?怎么调回来啊?在线等,谢谢, 电脑屏幕两边有黑边怎么恢复正常!!! 在文档中,如何设置首字下沉? Word里面的首字下沉,如何做到下沉2个字符? 在word2003里面文本框内如何首字下沉,高手进100悬赏 如何在word文档设置首字下沉? 想问一下,新用户注册天翼云盘有多少免费空间啊? word2003里首字下沉在哪里设置? 两个大数相加程序修改。为什么会乱码,求修改 大数相加求修改 如何输入一个大数 很大的数 并进行计算的 公司和个人可以统称什么? C中大数的取余怎么写啊? 2019公司个人年终工作总结 这个c程序怎样修改才能求出20的阶乘或者更大数的阶乘? 注册公司对个人有什么好处? 公司发展与个人发展的关系是什么? C语言中如何实现大数计算 求解,如何对一个大数进行质因数分解 如何实现企业与个人共同发展? c语言大数减法该如何实现? 如何在淘宝开店铺详细步骤? 公司和个体的区别?急,急。 如何用一个支付宝开店 公司可以个人独资吗 个人能注册公司吗? 个人公司是什么意思 实体店怎么签约支付宝开店