第十周学习总结

博主分享了自己在学习高数过程中遇到的困难,决定暂停第四阶段的学习,专注于复习基础知识和练习之前的题目。文章详细介绍了如何用C++实现高精度加法,通过将大数转换为数组进行逐位相加,实现高精度运算。博客还提到,下周由于篮球比赛,学习时间会减少,计划在之后的两周内补充其他未掌握的知识。
摘要由CSDN通过智能技术生成

最近学习效率有点低,时间也没有把握,因为最近学的高数有点难,有时候在小组会学习高数,本身学习算法的时间就少,最近更少.很多进度都没跟上,下周我决定不学习第四阶段,好好复习之前的基础知识,多练练之前的题,因为下周还有篮球比赛,几乎每天晚上都没时间.这周我真正学到的只有高精度加法,至于高精度其他算法以及全排列学的不太明白,本篇博客只写关于高精度加法,其他的在以后博客中慢慢补.

高精度算法的思想我觉得非常巧妙,低精度加法的话就是让电脑自动进行运算,高精度的话电脑无法进行运算,因此将高精度数转化为一个数组,然后将两个数组的每一位进行相加,就相当于两个数相加时,个位加个位,十位加十位,进位的话下一位加一,代码如下:

#include<bits/stdc++.h>
using namespace std;
//高精度大数 
struct hugeint{


	int num[505]={0};
	int len = 0;
};
//将字符串转化成数字 
hugeint strtoint(string s){
	hugeint ans;
	for(int i=s.size()-1;i>=0;i++){
		ans.num[++ans.len]=s[i]-'0';
	}
	return ans;
}
//打印高精度大数
void printint(hugeint n){
	for(int i=n.len;i>=1;i--){
		cout<<n.num[i];
	}
	cout<<endl;
}
//高精度+高精度
void add(hugeint a,hugeint b){
	hugeint ans;
	ans.len=max(a.len,b.len);
	//从低位往高位进行运算
	for(int i=1;i<=ans.len;i++){
		ans.num[i]+=a.num[i]+b.num[i];//对应位进行加法运算
		ans.num[i+1]=ans.num[i]/10;//更新进位 
		ans.num[i]%=10;//将运算结果的个位保留在ans中 
	} 
	//处理进位溢出
	if(ans.num[ans.len+1]>0){
		ans.len++;
	} 
	
} 
int main(){
	string a,b;
	cin>>a>>b;
	hugeint n1=strtoint(a);
	hugeint n2=strtoint(b);
	printint(add(n1,n2));
	return 0;
} 

其他知识以后的两周我会慢慢补回来,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值