高精度除法主要处理的就是把一个数字转换成高精度类型,然后进行操作。
其实只要一位一位地判断,然后再把剩下的补到前面去就行了。
#includeusing namespace std; const int N=2e4; char s[N]; struct node{ int num[N],len; void init(){ memset(num,0,sizeof(num)); len=1; } void toz(){ while(len>1&&num[len]==0) len--; } void read(){ scanf("%s",s+1); len=strlen(s+1); for(int i=1;i<=len;i++) num[len-i+1]=s[i]-'0'; } void write(){ for(int i=len;i>=1;i--) printf("%d",num[i]); printf("n"); } }s1,s2,ans; bool operator<(node a,node b){ if(a.len!=b.len) return b.len>a.len; for(int i=a.len;i>=1;i--) if(a.num[i]!=b.num[i]) return b.num[i]>a.num[i]; return 0; } bool operator>=(node a,node b){ return !(a=1;i--) a.num[i]=a.num[i-1]; a.num[1]=b; a.toz(); } node operator-(node a,node b){ node c; c.init(); if(a=1;i--){ mul(t,a.num[i]); while(t>=b){ t=t-b; c.num[i]++; } } c.toz(); return c; } int main(){ s1.read(); s2.read(); ans=s1/s2; ans.write(); return 0; }



