fork download
  1. def longAdd(s1,s2):
  2. p=0
  3. l1=len(s1)
  4. l2=len(s2)
  5. i1=l1-1
  6. i2=l2-1
  7. res=""
  8. while(True):
  9. if ((i1<0) & (i2<0)):
  10. break
  11. if (i1<0):
  12. a2=int(s2[i2])+p
  13. p=a2//10
  14. a2=a2%10
  15. res=str(a2)+res
  16. i2-=1
  17. if (i2<0):
  18. break
  19. if (i2<0):
  20. a1=int(s1[i1])+p
  21. p=a1//10
  22. a1=a1%10
  23. res=str(a1)+res
  24. i1-=1
  25. if (i1<0):
  26. break
  27. a1=int(s1[i1])
  28. a2=int(s2[i2])
  29. r=a1+a2+p
  30. p=r//10
  31. r=r%10
  32. res=str(r)+res
  33. i1-=1
  34. i2-=1
  35. if (p>0):
  36. res=str(p)+res
  37. return res
  38.  
  39. def longSub(s1,s2):
  40. l1=len(s1)
  41. l2=len(s2)
  42. if (l1==l2):
  43. if s1[0]>s2[0]:
  44. sgn=1
  45. a1=s1
  46. a2=s2
  47. else:
  48. sgn=-1
  49. a1=s2
  50. a2=s1
  51. else:
  52. if (l1 > l2):
  53. sgn=1
  54. a1=s1
  55. a2=s2
  56. else:
  57. sgn=-1
  58. a1=s2
  59. a2=s1
  60.  
  61. l1=len(a1)
  62. l2=len(a2)
  63. i1=l1-1
  64. i2=l2-1
  65. res=""
  66. b=0
  67. while(True):
  68. if ((i1<0) & (i2<0)):
  69. break
  70. if (i1<0):
  71. q2=int(a2[i2])-b
  72. p=q2//10
  73. q2=a2%10
  74. res=str(q2)+res
  75. i2-=1
  76. if (i2<0):
  77. break
  78. q1=int(a1[i1])
  79. q2=int(a2[i2])
  80. q=q1-b-q2
  81. if (q>=0):
  82. res=str(q)+res
  83. b=0
  84. else:
  85. q+=10
  86. b=1
  87. res=str(q)+res
  88. i1-=1
  89. i2-=1
  90.  
  91. if (sgn==-1):
  92. res="-"+res
  93. return res
  94.  
  95. s1="9999"
  96. s2="8888"
  97. r=longAdd(s1,s2)
  98. print(r)
  99.  
  100. s1="9999"
  101. s2="8888"
  102. r=longSub(s1,s2)
  103. print(r)
  104.  
  105. s1="8888"
  106. s2="9999"
  107. r=longSub(s1,s2)
  108. print(r)
  109.  
  110. s1="24"
  111. s2="61"
  112. r=longSub(s1,s2)
  113. print(r)
  114.  
  115.  
  116.  
Success #stdin #stdout 0.02s 27712KB
stdin
Standard input is empty
stdout
18887
1111
-1111
-37