from time import clock import sys def Multiply(x,y,lenx,leny,n): global Totalmulcount global RecCall if (lenx==leny <=2): Totalmulcount+=1 return x*y xr1= x % (10**(lenx/2)) xl=x/(10**(lenx/2)) res4=x*y yr1= y % (10**(leny/2)) yl=y/(10**(leny/2)) res1=Multiply(xl,yl,len(str(xl)),len(str(yl)),len(str(yl))) res2=Multiply(xr1,yr1,len(str(xr1)),len(str(yr1)),len(str(yr1))) res31=Multiply(xl,yr1,len(str(xl)),len(str(yr1)),len(str(yr1))) res32=Multiply(xr1,yl,len(str(xr1)),len(str(yl)),len(str(yl))) res3=(res31+res32) result=res1*(2**(2*len(str(xl))))+res2+res3*(2**(len(str(yl)))) result=res4 Totalmulcount+=2 RecCall+=1 return result def Integer_Multiplication(): try: InFile=open('in12_1.txt','r') OutFile=open('out_11_12_1.txt','w') start=clock() x=InFile.readline() y=InFile.readline() ## START lenx=len(str(x)) leny=len(str(y)) x=str(int(x)) y=str(int(y)) decx=0 decy=0 for i in x: decx=decx*2+int(i) for i in y: decy=decy*2+int(i) Result=Multiply(decx,decy,lenx,leny,lenx+leny) Num=0 digit=0 i=Result while(i > 0): Num=(i%2)*(10**digit)+Num i=i/2 digit=digit+1 i=i+1 ## END OutFile.write(str(Num)) OutFile.write("\nNumber of multiplications : "+str(Totalmulcount)) OutFile.write("\nNumber of recursive calls : "+str(RecCall)) OutFile.write("\nTotal Excution Time : "+str(clock()-start)) memUsed = sys.getsizeof(InFile) + sys.getsizeof(OutFile)+ sys.getsizeof(start)+ sys.getsizeof(x)+ sys.getsizeof(y)+ sys.getsizeof(decx)+ sys.getsizeof(decy)+ sys.getsizeof(Num)+ sys.getsizeof(digit)+ sys.getsizeof(i) OutFile.write("\nMemory used : "+str(memUsed)+" Bytes") InFile.close() OutFile.close() print "Check Your Output File : out_11_sec12_1.txt is Generated" except ValueError: print "Check Your Output File Cant Not Generated",ValueError InFile.close() OutFile.close() Totalmulcount=0 RecCall=0 Integer_Multiplication()