96分求助大佬们,为什么整除数组还要考虑后一位?附上两份代码(第二份AC))
查看原帖
96分求助大佬们,为什么整除数组还要考虑后一位?附上两份代码(第二份AC))
1034242
RingTouSou楼主2023/10/30 15:30

第一份 96分

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=5005;
int A[N],b,C[N];
int la,lc;

void div(int A[],int b,int C[])
{
	long long t=0;
	for(int i=la-1;i>=0;--i)
	{
		t=t*10+A[i];
		C[la-1-i]=t/b;
		t%=b;
	}
	reverse(C,C+lc);
	while(C[lc-1]==0&&lc) lc--;
}

int main()
{
	string a;
	cin>>a>>b;
	lc=la=a.size();
	for(int i=la-1;i>=0;i--)
	{
		A[la-1-i]=a[i]-'0';
	}
	div(A,b,C);
	for(int i=lc-1;i>=0;--i)
	{
		cout<<C[i];
	}
	return 0;
}

第二份 100分

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=5005;
int A[N],b,C[N];
int la,lc;

void div(int A[],int b,int C[])
{
	long long t=0;
	for(int i=la-1;i>=0;--i)
	{
		t=t*10+A[i];
		C[la-1-i]=t/b;
		t%=b;
	}
	reverse(C,C+lc);
	while(C[lc]==0&&lc) lc--;
}

int main()
{
	string a;
	cin>>a>>b;
	lc=la=a.size();
	for(int i=la-1;i>=0;i--)
	{
		A[la-1-i]=a[i]-'0';
	}
	div(A,b,C);
	for(int i=lc;i>=0;--i)
	{
		cout<<C[i];
	}
	return 0;
}

中间修改了两个地方 在于for(int i=lc;i>=0;--i)和while(C[lc]==0&&lc) lc--; 为什么需要考虑lc这个地方的数字,按道理来讲这里不会被进位吧?

2023/10/30 15:30
加载中...