给定两个 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 */