本文介绍: 给大家看个小视频

 给大家看个小视频13 高精度算法 乘法_哔哩哔哩_bilibili

乘法竖式

大家觉得Plan A好,还是Plan B好呢(对于计算机来说)?那显然是B啦

x*y问题

mul思路:mul()函数返回x数组乘y数组的积,保存在z数组。根据上图Plan B,第一层循环枚举y数组长度次,每一次(第二层循环遍历y数组每个元素的值,然后a数组需要使用高精度加法Peter算法小课堂—高精度加法-CSDN博客

易错点:1.删去前导0

               2.字符串数字要-‘0’

main()

int x[SIZE],y[SIZE],z[SIZE];
int main(){
	string s1,s2;
	cin>>s1>>s2;
	converts(x,s1);
	converts(y,s2);
	mul(z,x,y);
	print(z);
	return 0;
}

感觉看懂思路了,这应该自己写吧……

mul()

void mul(int *c,int *a,int *b){
	converts(c,"0");//化0
	for(int i=0;i<SIZE;i++)//枚举b数组个数次
		for(int j=0;j<b[i];j++)//遍历b数组每个元素的值
			add(c+i,a,SIZE-i);//相加,高精度加法
}

大家应该能看懂吧

P1009 [NOIP1998 普及组] 阶乘之和 – 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 这道题,首先分析大小数据。敲一下计算器得差不多当n<=20时,是不用高精的。

所以这题我们使用大小数据分离一方法

数据

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
	cin>>n;
	long long ans=0;
	long long f=1;
	for(int i=1;i<=n;i++){
		f*=i;
		ans+=f;
	}
	cout<<ans<<endl;
}

大数据

先讲讲如何判断小数据和大数据

int solve2(){
	converts(ans,"0");
	converts(f,"1");
	for(int i=1;i<=n;i++){
		mul(f,i);
		add(ans,f);
	}
	print(ans);
	return 0;
}

 P1096 [NOIP2007 普及组] Hanoi 双塔问题 – 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

大家思考思考吧,答案发在评论区 

原文地址:https://blog.csdn.net/zhang040818/article/details/134697752

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14321.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注