点击打开链接
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<cstring>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<limits.h>
#include<assert.h>
#define LL long long
#define inf 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
class Solution {
public:
int divide(int dividend, int divisor) {
int i=0,j=0,flag=0;
long long sum=0,a,b,map[33],times[33],STOP=1;
STOP=STOP<<31;
if(divisor==0) return INT_MAX;
if((dividend>0&&divisor>0)||(dividend<0&&divisor<0)) flag=1;
a= abs((long long)dividend);
b= abs((long long)divisor);
map[0]=b; times[0]=1;
while (map[i]<=STOP) {
i++;
map[i]=map[i-1]+map[i-1];
times[i]=times[i-1]+times[i-1];
}
for(j=i-1;j>=0;j--){
while (a>=map[j]) {
a-=map[j];
sum+=times[j];
}
}
sum=flag? sum:-sum;
if(sum<INT_MIN||sum>INT_MAX) return INT_MAX;
return (int)sum;
}
};
int main()
{
Solution temple;
cout<<temple.divide(10,2)<<endl;
return 0;
}