大佬求助!10分
  • 板块P2005 A/B Problem II
  • 楼主z_yk
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/2/13 12:03
  • 上次更新2023/10/28 08:41:05
查看原帖
大佬求助!10分
540872
z_yk楼主2022/2/13 12:03
#include<iostream>
#include<cstring>
using namespace std;
int a[1001],b[1001],c[1001];
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] - '0';
	}
} 

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]+=10;
			}a[i]-=b[i];
		}
		while (a[0]>0 && a[a[0]]==0) {
			a[0]--;
		}
		return;
	}
} 

void print(int a[]) {
	if (a[0] == 0) {
		cout << 0 << endl;
		return;
	}
	for (int i=a[0]; i>0; i--) {
		cout << a[i];
	}
	cout << endl;
	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;
} 

int main(){
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	init(a);
	init(b);
	chugao(a,b,c);
	print(c);
	return 0;
}

第1个和第15个测试点正确,第2,3,12,14,16,17,18,19,20个测试点TEL,第4到第11个和第13个测试点RE

2022/2/13 12:03
加载中...