IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C++的高精乘+高精加 -> 正文阅读

[数据结构与算法]C++的高精乘+高精加

题目

想法

?这题的原型就是在简单的求阶乘和基础上加入一个高精度操作

那么把求阶乘的两步操作用升级版的高精度函数代替即可

👆 所说的两步操作即为:

// FOR循环内 第一步单独求每一项阶乘 第二步把各项相加 代码实现如下:

for(int i = 0; i < N; ++i) {

? ? ? ? num *= i;

? ? ? ? sum += num;

}

题解【BY SocietyNiu

#include<iostream>
using namespace std;
#define N 1000
int arr[N+1000] = { 0 };
int sum[N+1000] = { 0 };
int num;
void ppuls(int* arr, int* sum) // 高精加
{
	int jw = 0;// u must set jw inside the function otherwise it'll be change by other function
	for (int i = 1; i <= N; ++i) 
	{
		sum[i] += arr[i] + jw;
		jw = sum[i] / 10;
		sum[i] %= 10;
	}
	return;
	//++jw;
	//cout << jw << endl;
}
void pmut(int* arr, int n) // 高精乘
{
	int jw = 0;
	for (int i = 1; i <= N; ++i)
	{
		arr[i] = arr[i] * n + jw;
		jw = arr[i] / 10;
		arr[i] %= 10;
	}
	return;
	//++jw;
	//cout << jw;
}
int main() 
{
	// ceculate
	cin >> num;
	arr[1] = 1; // do not forget this!!
	for (int i = 1; i <= num; ++i)
	{
		pmut(arr, i);
		ppuls(arr, sum);
	}
	
	// print
	int flag = 0; // decline the front "0"
	for (int i = N; i >= 1; --i) // 倒叙
	{
		if (sum[i] != 0)
			++flag;
		if (flag)
			cout << sum[i];
	}
	return 0;
}

新知识

1、用高精乘算阶乘时,要对每一位都进行乘法操作,再对每一位进行进位

2、进位和加减乘除可以在一个循环里同时进行,不需要分开操作再遍历

3、高精度数的输出都是倒序输出去掉前导零,用一个标记即可轻松完成前导零的查找

4、由于是阶乘,记得要给第一位赋一个“1”,算式才能进行

5、数组的下标是从第二个元素开始,也即是“1”开始,还有分配空间的时候记得要多出一点

黑科技

在不支持PY的竞赛中,可以利用PY的一些特性来打表

比如这个题,可以直接用PY的高精度算出N <= 50的阶乘和,再一一打表

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 13:00:34  更:2021-11-17 13:01:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:41:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码