作业介绍

高精度加法

#include<bits/stdc++.h>
using namespace std;
string s1,s2; 
int a[605],b[605],c[605];
int main(){
	//1.输入字符串  
	cin>>s1>>s2;
	//2.把输入的字符存入  整数数组
	//把字符串的数字 逆序存储到数字数组中
	int len1 = s1.size();
	int len2 = s2.size();
	for(int i=0;i<len1;i++){
		a[len1-i-1]=s1[i]-'0';
	}
	for(int i=0;i<len2;i++){
		b[len2-i-1]=s2[i]-'0';
	}
	//确定循环次数 由s1 和 s2中最大的
//	int len3 = len1>len2?len1:len2;//三目运算符
	int len3 = max(len1,len2);
	for(int i=0;i<len3;i++){
		c[i] += a[i] + b[i];
		//如果c里面的元素大于等于10 ,那么要进位
		if(c[i]>=10){
			c[i+1] += c[i]/10;
			c[i] = c[i]%10;
		}
	}
	//如果len3的下标不为0 ,则需要进位
	if(c[len3]!=0) len3++;
	//逆序输出
	for(int i=len3-1;i>=0;i--){
		cout<<c[i];
	}
	return 0;
}

高精度减法

#include<bits/stdc++.h>
using namespace std;

int a[10091],b[10091],c[10091];
string s1,s2;

bool cmp(string s1,string s2){
	if(s1.size()<s2.size()) return 1;
	if(s1.size()>s2.size()) return 0;
	for(int i=0;i<s1.size();i++){
		if(s1[i]!=s2[i]) return s1[i]<s2[i];
	}
}

int main(){
	cin>>s1>>s2;
	
	if(s1==s2){
		cout<<0;
		return 0;
	}
	if(cmp(s1,s2)){
		cout<<"-";
		swap(s1,s2);
	}
	int len1=s1.size();
	int len2=s2.size(); 
	
	for(int i=0;i<len1;i++) a[len1-i]=s1[i]-'0';	
	for(int i=0;i<len2;i++) b[len2-i]=s2[i]-'0';
	
	for(int i=1;i<=len1;i++){
		c[i]+=a[i]-b[i];
		if(c[i]<0){
			c[i]+=10;
			c[i+1]-=1;	
		}
	}
	
	len1++;
	while(c[len1]==0) len1--;
		
	for(int i=len1;i>=1;i--){
		cout<<c[i];
	}
	return 0;
}

状态
已结束
题目
5
开始时间
2024-9-22 0:00
截止时间
2024-10-9 23:59
可延期
24 小时