第五个显示超时,有大佬能帮个忙吗?
查看原帖
第五个显示超时,有大佬能帮个忙吗?
616462
wszzhh123456楼主2022/1/26 09:27
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int a[10000001],b[10000001],c[10000001];
void init(int a[]){
	string s;
	cin>>s;
	a[0]=s.length();
	for(int i=1;i<=a[0];i++){
		a[i]=s[a[0]-i]-48;
	}
}
void numcpy(int p[],int q[],int det){
	for(int i=1;i<=p[0];i++){
		q[i+det-1]=p[i];
	}
	q[0]=p[0]+det-1;
}
int compare(int a[],int b[]){
	if(a[0]>b[0]) return 1;
	if(a[0]<b[0]) return -1;
	for(int i=a[0];i>0;i--){
		if(a[i]>b[i]) return 1;
		if(a[i]<b[i]) return -1;
	} 
	return 0;
} 
void jian(int a[],int b[]){
	int flag;
	flag=compare(a,b);
	if(flag==0){
		a[0]=0;
		return;
	}
	if(flag==1){
		for(int i=1;i<=a[0];i++){
			if(a[i]<b[i]){
				a[i+1]--;
				a[i]=a[i]+10;
			}
			a[i]-=b[i];
		}
		while(a[0]>0&&a[a[0]]==0){
			a[0]--;
		}
		return;
	}
} 
void chugao(int a[],int b[],int c[]){
	int tmp[1001];
	c[0]=a[0]-b[0]+1;
	for(int i=c[0];i>0;i--){
		memset(tmp,0,sizeof(tmp));
		numcpy(b,tmp,i);
		while(compare(a,tmp)>=0){
			c[i]++;
			jian(a,tmp);
		}
	}
	while(c[0]>0&&c[c[0]]==0){
		c[0]--;
	}
	return;
}
void print(int a[]){ 
	for(int i=a[0];i>0;i--){
		cout<<a[i];
	}
	cout<<endl;
	return;
} 
int main(){
	init(a);
	init(b);
	chugao(a,b,c);
	print(c);
	return 0 ;
}

2022/1/26 09:27
加载中...