这道题是有难度的,注意超时问题,回溯法

题目描述

求两个不超过100位的正整数相除的商。

输入描述

第1 行是测试数据的组数n,每组测试数据占2 行,第1 行是被除数,第2 行是除数,每行数据不超过100位。

输出描述

n 行,每组测试数据有一行输出是相应的整数商

样例输入

2

10000000000000000000000000000000000000000

10000000000

5409656775097850895687056798068970934546546575676768678435435345

134563

样例输出

1000000000000000000000000000000

40201665949019053496778882739452679670834825142697239794263

 

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     int n,i;
 5     cin>>n;
 6     for(i=0;i<n;i++){
 7         long long a,b,p,q;
 8         cin>>a;
 9         cin>>b;
10         p=a%b;
11         q=(a-p)/b;
12         cout<<q<<endl;
13     }
14     return 0;
15 }

 

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 string minus(string a,string b){
 5     int i,j,length,p;
 6     int per=0,k=0;
 7     string zero="0";
 8     length=a.size()-b.size();
 9     j=a.size()-1;
10     int min[j];
11     string zeros(length,'0');
12     b=zeros+b;
13     for(i=j;i>=0;i--){
14         p=(a[i]-'0')-(b[i]-'0')-per;
15         if(p<0){
16             p=p+10;
17             min[j--]=p;
18             per=1;
19         }
20         else{
21             min[j--]=p;
22             per=0;
23         }
24     }
25     while(min[k]==0){
26         k++;
27         if(k==a.size()){
28             break;
29         }
30     }
31     if(k==a.size()){
32         return zero;
33     }
34     else{    
35         for(i=k;i<a.size();i++){
36             min[i]=min[i]+'0';
37         }
38         return min;
39     }
40 }
41 int main(){
42     string times="0";
43     string p,q,ss;
44     int n,i;
45     for(i=0;i<n;i++){
46         cin>>p;
47         cin>>q;
48     }
49     while(ss-"0">0){
50         ss=minus(p,q)
51         p=ss;
52         time=time+1;
53     }
54     cout<<time<<endl;
55 }
 1 #include<iostream>
 2 #include<string>
 3 #include<cstring>
 4 using namespace std;
 5 char l1[300];
 6 char l2[300];
 7 int a1[300];
 8 int a2[300];
 9 int as[300];
10 int sub(int *p1,int *p2,int nl1,int nl2){
11     int i;
12     if(nl1<nl2){
13         return -1;
14     }
15     if(nl1==nl2){
16         for(i=nl1-1;i>=0;i--){
17             if(p1[i]>p2[i]){
18                 break;
19             }
20             else if(p1[i]<p2[i]){
21                 return -1;
22             }
23         }
24     }
25     for(i=0;i<nl1;i++){
26         p1[i]-=p2[i];
27         if(p1[i]<0){
28             p1[i]+=10;
29             p1[i+1]--;
30         }
31     }
32     for(i=nl1-1;i>=0;i--){
33         if(p1[i]){
34             return i+1;
35         }
36         return 0;
37     }
38 }
39 int main(){
40     int t,n;
41     cin>>t;
42     for(n=0;n<t;n++){
43         int i,j,n1,n2,nn;
44         cin>>l1;
45         cin>>l2;
46         n1=strlen(l1);
47         n2=strlen(l2);
48         nn=n1-n2;
49         memset(a1,0,sizeof(a1));
50         memset(a2,0,sizeof(a2));
51         memset(as,0,sizeof(as));
52         for(j=0,i=n1-1;i>=0;i--){
53             a1[j++]=l1[i]-'0';
54         }
55         for(j=0,i=n2-1;i>=0;i--){
56             a2[j++]=l2[i]-'0';
57         }
58         if(n1<n2){
59             cout<<"0"<<endl;
60             continue;
61         }
62         if(nn>0){
63             for(i=n1-1;i>=nn;i--){
64                 a2[i]=a2[i-nn];
65             }
66             for(;i>=0;i--){
67                 a2[i]=0;
68             }
69             n2=n1;
70         }
71         for(j=0;j<=nn;j++){
72             int nt;
73             while((nt=sub(a1,a2+j,n1,n2-j))>=0)
74             {
75                 n1=nt;
76                 as[nn-j]++;
77             }
78         }
79         for(i=200;(i>=0)&&(as[i]==0);i--);
80         if(i>=0){
81             for(;i>=0;i--){
82                 cout<<as[i];
83             }
84         }
85         else{
86             cout<<"0";
87         }
88         cout<<endl;
89     }
90     return 0;
91 }
View Code

相关文章:

  • 2022-12-23
  • 2021-06-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-02
  • 2021-09-14
  • 2021-07-20
猜你喜欢
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-27
相关资源
相似解决方案