Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Num{
- String number;
- int size, base;
- static char map[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j'};
- int[] arr;
- Num(){
- this.number = "";
- }
- Num(String n){
- this.base = 10;
- this.size = n.length();
- this.number = n;
- }
- Num(Scanner sc){
- this.number = sc.next();
- this.size = number.length();
- }
- void trim(){
- int idx = 0;
- String n = "";
- while(this.number.charAt(idx) == '0') idx++;
- while(idx<size){
- n = n + this.number.charAt(idx);
- idx++;
- }
- this.number = n;
- this.size = number.length();
- }
- static boolean isLetter(char c){
- return (c>='a'&&c<='z')||(c>='A'&&c<='Z');
- }
- void toArray(){
- this.trim();
- arr = new int[size];
- for(int i=0;i<size;i++){
- char tmp = this.number.charAt(i);
- if(isLetter(tmp)) arr[i] = tmp - 'a' + 10;
- else arr[i] = tmp - '0';
- }
- }
- void printArray(){
- for(int i=0;i<size;i++){
- System.out.printf("%d ",arr[i]);
- }
- System.out.println();
- }
- void multiplyByDigit(char b){
- if(b == '0') return ;
- int tmp = b - '0';
- int res[] = new int[size+1];
- String r = "";
- for(int i=size-1;i>-1;i--){
- res[i+1] += arr[i]*tmp;
- res[i] = res[i+1]/base;
- res[i+1] = res[i+1]%base;
- r = Integer.toString(res[i+1]) + r ;
- }
- if(res[0]!=0) r = Integer.toString(res[0]) + r;
- System.out.print(r);
- }
- static int[] toArrayReverse(String str){
- int[] a = new int[str.length()];
- for(int i=str.length()-1;i>-1;i--){
- char tmp = str.charAt(i);
- if(isLetter(tmp)) a[i] = tmp - 'a' + 10;
- else a[i] = tmp - '0';
- }
- return a;
- }
- //add
- String add( String str2){
- String str1 = this.number;
- if (str1.length() > str2.length()){
- String t = str1;
- str1 = str2;
- str2 = t;
- }
- int n1 = str1.length(), n2 = str2.length();
- int f[] = toArrayReverse(str1); int s[] = toArrayReverse(str2);
- int carry = 0;
- String res = "";
- for(int i=0;i<n1;i++){
- int sum = f[i] + s[i] + carry;
- res = map[sum%base] + res;
- carry = sum / base;
- }
- // Add remaining digits of larger number
- for (int i = n1; i < n2; i++){
- int sum = s[i] + carry;
- res = map[sum%base] + res;
- carry = sum / base;
- }
- if (carry > 0) res = map[carry] + res;
- return res;
- }
- //subtract
- }
- public class Nums{
- public static void main(String[] args) {
- Num c = new Num("111111");
- c.toArray();
- c.printArray();
- //c.multiplyByDigit('9');
- System.out.println(c.add("1111"));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement