import numpy as np
class Solution(object):
def divide(self, dividend, divisor):
if dividend*divisor>0:
flag=1#符号相同
else:
flag=0
dividend=np.abs(dividend)
divisor=np.abs(divisor)
m=len(str(dividend))
n=len(str(divisor))
if m<n:
return 0
m_list=[]#用于储存dividend的每一位数
answer=[]#从高位到低位储存商每一位的数字
for i in range(m):
m_list.append(int(str(dividend)[i]))
temp=[]
for i in range (m):
z=''
if len(temp)!=0:
for j in range(len(temp)):
z+=str(temp[j])
z+=str(m_list[i])
z=int(z)
if z<divisor:
temp.append(m_list[i])
answer.append(0)
else:
count=0
while z-divisor>=0:
z=z-divisor
count+=1
answer.append(count)
if z!=0:
temp=[]#先清空
temp.append(z)
else:
temp=[]
else:
if m_list[i]<divisor:
answer.append(0)
temp.append(m_list[i])
else:
p=m_list[i]
count=0
while p-divisor>=0:
p=p-divisor
count+=1
answer.append(count)
if p!=0:
temp=[]
temp.append(p)
answer=answer[np.where(answer!=0)[0][0]:]
final=''
for k in answer:
final+=str(k)
final=int(final)
if flag==1:
final=final
if final>2147483647:
final=2147483647
else:
if final>=2147483648:
final=2147483648
final=-final
return final
import numpy as np
class Solution(object):
def getSum(self, a, b):
ll=[]
if a*b>0:
flag=1
elif a==0:
return b
elif b==0:
return a
else:
flag=0
if flag==1:
final=self.Length(np.abs(a),np.abs(b))
if a<0:
final=-final
else:
g_val=np.max([np.abs(a),np.abs(b)])
g_idx=np.argmax([np.abs(a),np.abs(b)])
g=[a,b][g_idx]
[a,b].pop(g_idx)
s_val=[a,b][0]
final=self.Length(np.abs(g_val),-np.abs(s_val))
return final
def Length(self,a,b):
ll=[]
for p in [a,b]:
if p>0:
for i in range(np.abs(p)):
ll.append(1)
else:
for i in range(np.abs(p)):
ll.pop()
return len(ll)