社区讨论
5.6re
P1480A/B Problem(高精度除法Ⅰ)参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mjh8hdby
- 此快照首次捕获于
- 2025/12/22 22:10 3 个月前
- 此快照最后确认于
- 2025/12/25 18:25 2 个月前
CPP
#include<bits/stdc++.h>
#include<string.h>
using namespace std;
int a[101],b[101],c[202],na,nb;
string s;
bool szma(int x[],int y[])
{
int n1=x[0];
int n2=y[0];
if(n1<n2)return 0;
if(n1>n2)return 1;
for(int i=n1;i>=1;i--)
{
if(x[i]<y[i])return 0;
if(x[i]>y[i])return 1;
}
return 1;
}
void jian(int x[],int y[])
{
for(int i=1;i<=x[0];i++)
{
if(x[i]<y[i])
{
x[i+1]-=1;
x[i]+=10;
}
x[i]=x[i]-y[i];
}
while(x[0]>1&&x[x[0]]==0)
{
x[0]--;
}
}
bool dengy(int x[],int y[])
{
int n1=x[0];
int n2=y[0];
if(n1!=n2)return 0;
for(int i=n1;i>=1;i--)
{
if(x[i]!=y[i])return 0;
}
return 1;
}
void cry(int x[],int y[],int q)
{
for(int i=1;i<=x[0];i++)
{
y[i+q]=x[i];
}
y[0]=x[0]+q;
}
int main()
{
memset(c,0,sizeof(c));
cin>>s;
a[0]=s.length();
for(int i=1;i<=a[0];i++)
{
a[i]=s[a[0]-i]-'0';
}
cin>>s;
b[0]=s.length();
for(int i=1;i<=b[0];i++)
{
b[i]=s[b[0]-i]-'0';
}
c[0]=max(1,a[0]-b[0]+1);
if(dengy(a,b))
{
cout<<"1";
return 0;
}
if(!szma(a,b))
{
cout<<"0";
return 0;
}
int t[202];
for(int i=c[0];i>=1;i--)
{
memset(t,0,sizeof(t));
cry(b,t,i-1);
while(szma(a,t))
{
jian(a,t);
c[i]++;
if(c[i]>=10)break;
}
}
while(c[0]>1&&c[c[0]]==0)
{
c[0]--;
}
for(int i=c[0];i>=1;i--)
{
cout<<c[i];
}cout<<'\n';
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...