Advertisement
Guest User

Untitled

a guest
Apr 28th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 4.08 KB | None | 0 0
  1.  
  2. public class Naloga2 {
  3.  
  4.     public static void main(String[] args) {
  5.  
  6.         String a = "123";
  7.         String b = "456";
  8.         // os(a, b);
  9.         System.out.println(dv((a), (b)));
  10.         // System.out.println(stOut("0"));
  11.     }
  12.  
  13.     static void os(String a, String b) {
  14.         String result = "";
  15.         for (int i = 0; i < b.length(); i++) {
  16.             String s = "";
  17.             int c = 0;
  18.             int v1 = b.charAt(i) - '0';
  19.             for (int j = a.length() - 1; j >= 0; j--) {
  20.                 int v2 = a.charAt(j) - '0';
  21.                 int product = v1 * v2 + c;
  22.                 s = (j > 0) ? (product) % 10 + s : product + s;
  23.                 c = product / 10;
  24.             }
  25.             System.out.println((s.charAt(0) == '0') ? 0 : s);
  26.             if (i == 0) {
  27.                 result = s;
  28.             } else {
  29.                 result += 0;
  30.                 while (s.length() != result.length()) {
  31.                     s = 0 + s;
  32.                 }
  33.                 result = sumStr(result, s);
  34.             }
  35.         }
  36.         for (int i = 0; i < result.length(); i++) {
  37.             System.out.print("-");
  38.         }
  39.         System.out.println();
  40.         System.out.println(result);
  41.     }
  42.  
  43.     static String sumStr(String a, String b) {
  44.         String result = "";
  45.         int c = 0;
  46.         if (a.length() > b.length()) {
  47.             while (a.length() != b.length()) {
  48.                 b = 0 + b;
  49.             }
  50.         } else if (b.length() > a.length()) {
  51.             while (a.length() != b.length()) {
  52.                 a = 0 + a;
  53.             }
  54.         }
  55.         for (int i = a.length() - 1; i >= 0; i--) {
  56.             int v1 = b.charAt(i) - '0';
  57.             int v2 = a.charAt(i) - '0';
  58.             int sum = v1 + v2 + c;
  59.             int x = (i > 0) ? sum % 10 : sum;
  60.             result = x + result;
  61.             c = sum / 10;
  62.         }
  63.         return result;
  64.     }
  65.  
  66.     static String [] sodaDolzinaEnaka(String a, String b) {
  67.         while(a.length()%2!=0){
  68.             a=0+a;
  69.         }
  70.         while(b.length()%2!=0){
  71.             b=0+b;
  72.         }
  73.         if (a.length() > b.length()) {
  74.             while (a.length() != b.length()) {
  75.                 b = 0 + b;
  76.             }
  77.         } else if (b.length() > a.length()) {
  78.             while (a.length() != b.length()) {
  79.                 a = 0 + a;
  80.             }
  81.         }
  82.         return new String[]{a,b};
  83.     }
  84.  
  85.     static String stOut(String s) {
  86.         int i = 0;
  87.         if (isZero(s)) {
  88.             return "0";
  89.         }
  90.         while (i < s.length() && s.charAt(i) == '0') {
  91.             i++;
  92.         }
  93.         return s.substring(i, s.length());
  94.     }
  95.  
  96.     static boolean isZero(String str) {
  97.         for (int i = 0; i < str.length(); i++) {
  98.             if (str.charAt(i) != '0')
  99.                 return false;
  100.         }
  101.         return true;
  102.     }
  103.    
  104.     static int numZer(String s) {
  105.         int c = 0;
  106.         int i = 0;
  107.         while(i<s.length() && s.charAt(i)=='0') {
  108.             c++;
  109.             i++;
  110.         }
  111.         return c;
  112.     }
  113.  
  114.     static String dv(String a, String b) {
  115.         System.out.println(a + " " + b);
  116.  
  117.         if (isZero(a) || isZero(b)) {
  118.             return "0";
  119.         }
  120.        
  121.         if (stOut(a).length() == 1 || stOut(b).length() == 1) {
  122.             return linMnoz(a, b);
  123.         }
  124.         String arr[] = sodaDolzinaEnaka(a, b);
  125.         String tmpa = arr[0];
  126.         String tmpb = arr[1];
  127.         String a0 = stOut(tmpa.substring(tmpa.length() / 2, tmpa.length()));
  128.         String b0 = stOut(tmpb.substring(tmpb.length() / 2, tmpb.length()));
  129.         String a1 = stOut(tmpa.substring(0, tmpa.length() / 2));
  130.         String b1 = stOut(tmpb.substring(0, tmpb.length() / 2));
  131.    
  132.        
  133.         String a0b0 = dv(a0, b0);
  134.    
  135.         System.out.println(a0b0);
  136.        
  137.         String a0b1 = dv(a0, b1);
  138.    
  139.         System.out.println(stOut(a0b1));
  140.        
  141.         String a1b0 = dv(a1, b0);
  142.    
  143.         System.out.println(stOut(a1b0));
  144.        
  145.         String a1b1 = dv(a1, b1);
  146.    
  147.         System.out.println(stOut(a1b1));
  148.        
  149.         String str = tmpa + tmpb;
  150.         int n = str.length() / 2;
  151.  
  152.         for (int i = 0; i < n; i++) {
  153.             a1b1 += 0;
  154.         }
  155.         String sum = sumStr(a0b1, a1b0);
  156.         for (int i = 0; i < n / 2; i++) {
  157.             sum += 0;
  158.         }
  159.  
  160.         String r1 = sumStr(a1b1, sum);
  161.         String r2 = sumStr(r1, a0b0);
  162.  
  163.         return stOut(r2);
  164.     }
  165.  
  166.     static String linMnoz(String a, String b) {
  167.         String result = "";
  168.         for (int i = 0; i < b.length(); i++) {
  169.             String s = "";
  170.             int c = 0;
  171.             int v1 = b.charAt(i) - '0';
  172.             for (int j = a.length() - 1; j >= 0; j--) {
  173.                 int v2 = a.charAt(j) - '0';
  174.                 int product = v1 * v2 + c;
  175.                 s = (j > 0) ? (product) % 10 + s : product + s;
  176.                 c = product / 10;
  177.             }
  178.             if (i == 0) {
  179.                 result = s;
  180.             } else {
  181.                 result += 0;
  182.                 while (s.length() != result.length()) {
  183.                     s = 0 + s;
  184.                 }
  185.                 result = sumStr(result, s);
  186.             }
  187.         }
  188.         return result;
  189.     }
  190.  
  191.     static String ka(String a, String b) {
  192.         return "";
  193.     }
  194.  
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement