2 solutions
-
1
高精除改动,超短、简洁
#include<bits/stdc++.h> using namespace std; string x,y; int a[350],b[350],c[350],d[350],la,lb; bool pd(int last, int len){ for(int k=last+len;k<350;++k)if(d[k]!=0)return true; for(int i=len-1;i>=0;i--){ if(d[last+i]>b[i])return true; if(d[last+i]<b[i])return false; } return true; } void div(){ for(int i=la-lb;i>=0;i--){ while(pd(i,lb)){ for(int j=0;j<lb;j++){ d[i+j]-=b[j]; if(d[i+j]<0)d[i+j+1]--,d[i+j]+=10; } c[i]++; for(int j=i;j<350&&c[j]>=10;++j)c[j+1]+=c[j]/10,c[j]%=10; } } } int main() { cin>>x; y="13"; la=x.size(),lb=y.size(); for(int i=0;i<la;++i)a[la-i-1]=d[la-i-1]=x[i]-'0'; for(int i=0;i<lb;++i)b[lb-i-1]=y[i]-'0'; div(); bool f=false; for(int i=349;i>=0;i--)if(c[i]!=0||f)f=true,cout<<c[i]; if(!f)cout<<0; cout<<endl; f=false; for(int i=349;i>=0;i--)if(d[i]!=0||f)f=true,cout<<d[i]; if(!f)cout<<0; return 0; }
-
0
自己抄
#include <bits/stdc++.h> using namespace std; int a[1005],b[1005],c[1005],d[1005]; int LEN = 1005; bool greater_eq(int a[], int b[], int last_dg, int len) { if(a[last_dg + len] != 0) { return true; } for(int i = len - 1; i >= 0; i--) { if(a[last_dg + i] > b[i]) return true; if(a[last_dg + i] < b[i]) return false; } return true; } void read(int a[],int b[]) { char x[LEN + 1]; cin >> x; int lenx = strlen(x); for(int i = 0;i < lenx;i++) { a[lenx - i - 1] = x[i] -'0'; } b[1] = '1' -'0'; b[0] = '3' -'0'; } void div(int a[],int b[],int c[],int d[]) { int la, lb; for(la = LEN - 1;la > 0;la--) { if(a[la - 1] != 0) break; } for(lb = LEN - 1;lb > 0;lb--) { if(b[lb - 1] != 0) break; } if(lb == 0) { puts("除数不能为零"); return; } for(int i = 0; i < la;i++) d[i] = a[i]; for(int i = la - lb;i >= 0;i--) { while(greater_eq(d,b,i,lb)) { for(int j = 0; j < lb;j++) { d[i + j] -= b[j]; if(d[i + j] < 0) { d[i + j + 1] -= 1; d[i + j] += 10; } } c[i] += 1; } } } void prin(int c[]) { int i; for(i = LEN - 1;i >= 1;i--) { if(c[i] != 0) { break; } } for(;i >= 0;i--) { cout << c[i]; } cout << endl; for(i = LEN - 1;i >= 1;i--) { if(d[i] != 0) { break; } } for(;i >= 0;i--) { cout << d[i]; } } int main() { read(a,b); div(a,b,c,d); prin(c); return 0; }
- 1
Information
- ID
- 661
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 44
- Accepted
- 25
- Uploaded By