84分TLE求助
查看原帖
84分TLE求助
752429
sutianyi楼主2023/5/9 19:35
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
void init(int aa[]);
void chugao(int aa[],int bb[],int cc[]);
void numzero(int p[],int q[],int d);
int compare(int aa[],int bb[]);
void jian(int aa[],int bb[]);
void print(int aa[]);
int a[5001],b[5001],c[5001];
void init(int aa[]){
	string s;
	cin >> s; 
	int len = s.length();
	aa[0] = len;
	for(int i= 1;i <= len;i++){
		aa[i] = s[len - i] - '0';
	} 
	return;
}
void print(int aa[]){
	if(aa[0] == 0){
		cout << 0 << endl;
		return;
	}
	for(int i = aa[0];i >= 1;i--){
		cout << aa[i];
	}
	return; 
} 
void chugao(int aa[],int bb[],int cc[]){
	int temp[1001] = {}; 
	cc[0] = aa[0] - bb[0] + 1;
	for(int i = cc[0];i >= 1;i--){
		memset(temp,0,sizeof(temp)); 
		numzero(bb,temp,i);
		while(compare(aa,temp) >= 0){
			cc[i]++;
			jian(aa,temp);  
		} 
	} 
	while(cc[cc[0]] == 0 && cc[0] > 1)   cc[0]--; 
} 
void numzero(int p[],int q[],int d){
	for(int i = 1;i <= p[0];i++){
		q[i+d-1] = p[i]; 
	}
	q[0] = p[0] + d - 1;
} 
int compare(int aa[],int bb[]){
	if(aa[0] > bb[0])   return 1;
	else if(aa[0] < bb[0])  return -1;
	if(aa[0] == bb[0]){
		for(int i = aa[0];i >= 1;i--){ 
			if(aa[i] > bb[i])  return 1;
			else if(aa[i] < bb[i])  return -1; 
		}
	} 
	return 0;
}
void jian(int aa[],int bb[]){
	int flag = compare(aa,bb);
	if(flag == 0){
		aa[0] = 0;
		return;
	}
	if(flag == 1){
		for(int i = 1;i <= aa[0];i++){
			if(aa[i] < bb[i]){
				aa[i+1]--;
				aa[i] += 10;
			}
			aa[i] -= bb[i];
		}
		while(aa[aa[0]] == 0 && aa[0] >= 1) aa[0]--;
	}
} 
int main(){
	init(a);
	init(b);
	if(a[0]<b[0]){
	    cout << '0';
	    return 0;
	}
	chugao(a,b,c);
	print(c); 
	return 0;
}
2023/5/9 19:35
加载中...