C++计算大数据阶层
来源:互联网 发布:模拟器摇一摇软件 编辑:程序博客网 时间:2024/04/28 01:12
这是上大学时老师出的一个问题,当时没做出来。
C++中,用普通的数据类型精确计算超过20的阶乘应该是不可能的。下面通过数组实现任意500以内的阶乘,如果计算更大的数,也可以实现,不过时间要久一些。
//以下是程序代码
#include <iostream>
using namespace std;
const int MAX = 10000;
template <class TypeName>
class Fact
{
public:
Fact(TypeName f) : Value(f)
{
for(int i=0; i<MAX; i++)
{
arr[i] = 0;
}
arr[MAX-1] = 1;
}
//计算阶乘
void Calc()
{
int i = 0;
int j = 0;
for(i=1; i<=Value; i++)
{
//计算阶乘
for(j=MAX-1; j>=GetTop(); j--)
{
arr[j] *= i;
}
//分离数据,使每个数据只有一位数
for(int j=MAX-1; j>=GetTop(); j--)
{
arr[j-1] += arr[j]/10;
arr[j] = arr[j]%10;
}
}
}
//打印结果
void Print()
{
for(int i=GetTop(); i<MAX; i++)
{
cout << arr[i];
}
cout << endl;
}
//返回当前数据顶部
int GetTop()
{
int nStart = MAX;
for(int i=0; i<MAX; i++)
{
if(arr[i] > 0)
{
nStart = i;
break;
}
}
return nStart;
}
private:
TypeName arr[MAX];
TypeName Value;
};
int main()
{
Fact<int> f(100);
f.Calc();
f.Print();
system("pause");
return 0;
}
- C++计算大数据阶层
- 大数据阶层运算
- 处理大整数------计算n!(阶层)
- C语言计算N的阶层
- C实现大数据计算(+ - * / %)
- 计算N的阶层
- 计算n的阶层
- 大整数的阶层
- 计算n的阶层
- 中国社会九大阶层划分
- 大数据-计算引擎
- Spark 大数据计算
- 阶层
- 阶层
- 阶层
- 阶层+
- 高精度阶层(高精度计算小试牛刀)
- 云计算VS大数据
- C++中取随机数函数:rand() 和srand()
- 手把手教你玩转ARP包
- 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式
- DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较
- 《时间管理》培训笔记
- C++计算大数据阶层
- 单系统Ubuntu显示Grub菜单
- 以下选项中关于各种面向对象设计原则的说法正确的是()
- 上传Excel遇到System.InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered
- 程序员必知必会之 word 篇
- 解决wine安装软件缺少dll的问题---Winetricks
- goagent测试
- Unix scrip 11 - variables III 大括号
- 春晚宫女唐奕霖被爆背景深厚 可携助手出入央视排练场享有特权