C/C++教程

c++高精度2:高精度阶乘

本文主要是介绍c++高精度2:高精度阶乘,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

就一道水题:高精度阶乘求和:洛谷P1009

AC代码:

#include <iostream>
using namespace std;

const int maxn = 1005;
int ans[maxn] = {1}, n, res[maxn];
void Multi(int k){
	int cur = 0;
	for(int i = 0;i < maxn;++i){
		cur = ans[i] * k + cur / 10;
		ans[i] = cur % 10;
	}
}

void add(){
	int cur = 0;
	for(int i = 0;i < maxn;++i){
		cur = res[i] + ans[i] + cur / 10;
		res[i] = cur % 10;
	}
}

int main(){
	cin >> n;
	for(int i = 1;i <= n;++i){
		Multi(i);
		add();
	}
	int j = maxn;
	while(!res[j] && j > 0)
		j--;
	for(int i = j;i >= 0;--i)
		cout << res[i];
	return 0;
}

我觉得这个高精度只要会三个就可以了

重点要掌握:高精度加法、减法、乘法就可以了!
因为:除法:实际上就是减法,减多少次就会减成负数,这个次数-1就是除法的商。然后这个负数加上减数,就是余数,所以高精度取余数实际上也是高精度减法!然后高精度阶乘,实际上就是高精度数字乘以非高精度数,这道水题奉上,希望可以作为大家高精度的模板代码,因为我觉得我这个代码还算是比较简洁。嘻嘻~

这篇关于c++高精度2:高精度阶乘的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!