两数相除

给定两个 int 类型的数,不用乘法、除法和取模运算,计算他们的商。

输入格式

第一行依次输入被除数和除数,中间以空格间隔开。

输出格式

输出一个整数,表示它们的商。

样例输入

-1060849722  99958928

样例输出

-10

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n,m;
 5     while(cin>>n>>m){
 6     int flag=0;
 7     if((n<0&&m>0)||(n>0&&m<0)){
 8         flag=1;
 9     }
10     if(m==0){
11         cout<<"0"<<endl;
12     }else if(m==1){
13         cout<<n<<endl;
14     }else if(m==n){
15         cout<<"1"<<endl;
16     }else if(m==2){
17         cout<<(n>>1)<<endl;
18     }else if(n==INT_MAX&&m==INT_MIN){
19         cout<<"0"<<endl;
20     }else{
21         if(n==INT_MIN){
22             n=INT_MAX;
23         }else{
24             n=abs(n);
25         }
26         if(m==INT_MIN){
27             m=INT_MAX;
28         }else{
29             m=abs(m);
30         }
31         int num=(int)floor(exp(log(n)-log(m)));
32         if(flag){
33             num=-num;
34         }
35         cout<<num<<endl;
36     }
37     }
38     return 0;
39 }
40 /*
41 -3 2
42 -2
43 2147483647 -2147483648
44 0
45 -2147483648 2147483647
46 -1
47 -2147483648 2147483645
48 -1
49 0 0
50 0
51 0 1
52 0
53 1 0
54 0
55 1 1
56 1
57 4 5
58 0
59 6 10
60 0
61 10 6
62 1
63 4 2
64 2
65 4 3
66 1
67 4 1
68 4
69 */

 

posted @ 2017-11-30 13:59  樱花落舞  阅读(509)  评论(0编辑  收藏  举报