Advertisement
daskalot

Untitled

May 6th, 2019
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. import java.util.*;
  2. class Num{
  3. String number;
  4. int size, base;
  5. static char map[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j'};
  6. int[] arr;
  7. Num(){
  8. this.number = "";
  9. }
  10. Num(String n){
  11. this.base = 10;
  12. this.size = n.length();
  13. this.number = n;
  14. }
  15. Num(Scanner sc){
  16. this.number = sc.next();
  17. this.size = number.length();
  18. }
  19. void trim(){
  20. int idx = 0;
  21. String n = "";
  22. while(this.number.charAt(idx) == '0') idx++;
  23. while(idx<size){
  24. n = n + this.number.charAt(idx);
  25. idx++;
  26. }
  27. this.number = n;
  28. this.size = number.length();
  29. }
  30. static boolean isLetter(char c){
  31. return (c>='a'&&c<='z')||(c>='A'&&c<='Z');
  32. }
  33. void toArray(){
  34. this.trim();
  35. arr = new int[size];
  36. for(int i=0;i<size;i++){
  37. char tmp = this.number.charAt(i);
  38. if(isLetter(tmp)) arr[i] = tmp - 'a' + 10;
  39. else arr[i] = tmp - '0';
  40. }
  41. }
  42. void printArray(){
  43. for(int i=0;i<size;i++){
  44. System.out.printf("%d ",arr[i]);
  45. }
  46. System.out.println();
  47. }
  48. void multiplyByDigit(char b){
  49. if(b == '0') return ;
  50. int tmp = b - '0';
  51. int res[] = new int[size+1];
  52. String r = "";
  53. for(int i=size-1;i>-1;i--){
  54. res[i+1] += arr[i]*tmp;
  55. res[i] = res[i+1]/base;
  56. res[i+1] = res[i+1]%base;
  57. r = Integer.toString(res[i+1]) + r ;
  58. }
  59. if(res[0]!=0) r = Integer.toString(res[0]) + r;
  60. System.out.print(r);
  61. }
  62. static int[] toArrayReverse(String str){
  63. int[] a = new int[str.length()];
  64. for(int i=str.length()-1;i>-1;i--){
  65. char tmp = str.charAt(i);
  66. if(isLetter(tmp)) a[i] = tmp - 'a' + 10;
  67. else a[i] = tmp - '0';
  68. }
  69. return a;
  70. }
  71. //add
  72. String add( String str2){
  73. String str1 = this.number;
  74. if (str1.length() > str2.length()){
  75. String t = str1;
  76. str1 = str2;
  77. str2 = t;
  78. }
  79. int n1 = str1.length(), n2 = str2.length();
  80. int f[] = toArrayReverse(str1); int s[] = toArrayReverse(str2);
  81. int carry = 0;
  82. String res = "";
  83. for(int i=0;i<n1;i++){
  84. int sum = f[i] + s[i] + carry;
  85. res = map[sum%base] + res;
  86. carry = sum / base;
  87. }
  88. // Add remaining digits of larger number
  89. for (int i = n1; i < n2; i++){
  90. int sum = s[i] + carry;
  91. res = map[sum%base] + res;
  92. carry = sum / base;
  93. }
  94. if (carry > 0) res = map[carry] + res;
  95. return res;
  96. }
  97.  
  98.  
  99. //subtract
  100. }
  101. public class Nums{
  102.  
  103. public static void main(String[] args) {
  104. Num c = new Num("111111");
  105. c.toArray();
  106. c.printArray();
  107. //c.multiplyByDigit('9');
  108. System.out.println(c.add("1111"));
  109. }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement