阶乘、排列,组合的高精度运算

       本来只是想为了理解算法,把书上的代码尝试实现下的,结果心血来潮,又写了一个小程序,写到一半感觉太浪费时间,也就草草收场了。程序不是很完整,凑合着用还是没问题的。

#include <iostream>
#include <cstdlib>
using namespace std;
const int MAXN = 50000; // MAXN为计算的最高位数

void liancheng(int n,int m,int a[]) // n中取m高精度算法A(n,m)
{
	int i, j, t;	// t为临时变量
	int &k = a[0] = 0;	// 用a[0]存储值的位数,k引用a[0]

	t=n; while(t) { a[++k]=t%10; t/=10; } // 分离被乘数n各位到数组

	for(i=n-1;i>=n-m+1;i--)	// 乘数相继为n-1,n-2...n-m+1
	{
		t=0;
		for(j=1;j<=k;j++)
		{
			a[j]=a[j]*i+t;
			t=a[j]/10;
			a[j]%=10;
		}
		while(t) { a[++k]=t%10; t/=10; }
	}
}

int fun1()
{
	static int n = 0;
	int i,a[MAXN];
	if(!n)
	{
		cout << "   计 算 阶 乘 的 说 明\n"
			<< "1、输入0可以返回上级菜单\n"
			<< "2、每次输入要计算的N值即可,程序会计算N!\n"
			<< "3、N必须为1~1000内的整数\n\n";
	}
	cout <<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值