社区讨论

红黑紫三色,0分求助!

P1480A/B Problem(高精度除法Ⅰ)参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo8kawq6
此快照首次捕获于
2023/10/27 20:00
2 年前
此快照最后确认于
2023/10/27 20:00
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[201],b[201],c[201];

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 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;
}

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 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;
}

void chugao(int a[],int b[],int c[])
{
	int tmp[201];
	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()
{
	init(a);
	init(b);
	chugao(a,b,c);
	print(c);
	print(a);
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...