作业介绍

高精度乘法

#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[2001],b[2001],c[2005];
int main(){
	//1.输入2个字符串
	cin>>s1>>s2;
	//2.创建3个整数数组
	//3.获取字符串的长度
	int l1 = s1.size();
	int l2 = s2.size();
	//4.逆序存储数字
	for(int i=0;i<l1;i++){
		a[l1-i-1] = s1[i]-'0';
	}
	for(int i=0;i<l2;i++){
		b[l2-i-1] = s2[i]-'0';
	}
	//5.遍历 进行乘法操作
	for(int i=0;i<l1;i++){
		for(int j=0;j<l2;j++){
			c[i+j] += a[i]*b[j];//逐位相乘
			c[i+j+1] += c[i+j]/10;
			c[i+j] %= 10;
		}
	}
	//6.去除前导0
	int l3 = l1+l2;//做多的乘积位数
	while(c[l3-1]==0 && l3>1) l3--;
	//7.逆序输出	
	for(int i=l3-1;i>=0;i--){
		cout<<c[i];
	}
	
	return 0;
}

高精度除法

#include<bits/stdc++.h>
using namespace std;
string s1;//被除数
int a[1001],c[1001];
long long b,y;//b除数  y:上次除法余数
int main(){
	//高精度 / 低精度
	cin>>s1>>b;
	//1.顺序存储被除数
	int l1 = s1.size();
	for(int i=0;i<l1;i++) a[i] = s1[i] - '0';
	//2.模拟竖式除法
	for(int i=0;i<l1;i++){
		c[i] = (y*10+a[i]) / b;
		y = (y*10+a[i]) % b;
	}
	//3.去除前导0
	int idx = 0;
	while(c[idx] == 0 && idx<l1){
		idx++;
	}
	for(int i=idx;i<l1;i++){
		cout<<c[i];
	}
	return 0;
}

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