作业介绍

#include<bits/stdc++.h>
//#include<algorithm>
using namespace std;
string a, b;  // 存数字
int A[2010], B[2010], C[4010];
int main() {
	cin >> a >> b;
	int lena = a.size(), lenb = b.size();
	for(int i = 0; i < lena; i++) A[i] = a[i] - '0';
	for(int i = 0; i < lenb; i++) B[i] = b[i] - '0';
	//转换成整数 存进数组
	//  翻转数组 两种
//	for(int i = 0; i < lena / 2; i++) swap(A[i], A[lena -1 - i]); 
	reverse(A, A + lena);
	reverse(B, B + lenb);
	//  模板  
	//高精度 * 高精度  O(n^2) 高精度乘法 可以用多项式来做  O(nlogn)   省选知识点 
	for(int i = 0; i < lena; i++)
		for(int j = 0; j < lenb; j++) {
			// 相乘  放在对应的位置 i+ j 
			C[i + j] += A[i] * B[j];
		} 
	//此时  把每一位该有的数字都处理好了
	for(int i = 0; i < lena + lenb; i++) {
		C[i + 1] += C[i]  / 10;
		C[i] %= 10;  //对10取余  得到这一位的数值 
	} 
	int ed = lena + lenb - 1;
	while(ed > 0 && C[ed] == 0) ed--;
	for(int i = ed; i >= 0; i--) cout << C[i];
 
}
高精度除以低精度
#include<bits/stdc++.h>
using namespace std;

long long A[10100];
long long C[10010];
long long b;
long long r;
string a;

int main() {
	cin >> a >> b;
	int lena = a.size();
	for(int i = 0; i < lena; i++) {
		A[i] = a[i] - '0';
	}
	
	//除法运算不需要逆序存储
	for(int i = 0; i < lena; i++) {
		r = r * 10 + A[i];  //当前的被除数
		C[i] = r / b;
		r %= b;
	} 
	//算完了
	int st = 0 ;
	while(st < lena - 1 && C[st] == 0) st++;
	for(int i = st; i < lena; i++) {
		cout << C[i];
	} 
	
	
	
	
}
状态
已结束
题目
3
开始时间
2024-6-16 9:00
截止时间
2024-6-24 23:59
可延期
24 小时