`

java大整数相加及相乘

阅读更多

import java.io.BufferedInputStream;
import java.util.Scanner;
public class bigdec {
 public static void main(String[] args) {
  Scanner cin=new Scanner(new BufferedInputStream(System.in));
  String a,b;
  a=cin.next();
  b=cin.next();
  System.out.println(bigMul(a, b));
  System.out.println(bigAdd(a, b));
  //System.out.println(bigMu(a, 0));
 }
 public static String bigAdd(String a,String b){
  StringBuilder c = new StringBuilder();
  String d = "";
  int e;
  int ad=0;
  int al=a.length();
  int bl=b.length();
  while (al!=0&&bl!=0) { 
   e=(int)a.charAt(al-1)-48+(int)b.charAt(bl-1)-48+ad;
   if(e>=10) {e=e%10;ad=1;}
   else ad=0;
   c.append(e);
   al--;
   bl--;
  }
  if(al>bl){
   for (int i = al; i >0; i--) {
    e=(int)a.charAt(i-1)-48+ad;
    if(e>=10) {e=e%10;ad=1;}
    else ad=0;
    c.append(e); 
   }
   if(ad==1) c.append(ad);
  }
  else if(al<bl){
   for (int i = bl; i >0; i--) {
    e=(int)b.charAt(i-1)-48+ad;
    if(e>=10) {e=e%10;ad=1;}
    else ad=0;
    c.append(e); 
   }
   if(ad==1) c.append(ad);
  }
  else if (al==bl) {
   if(ad==1) c.append(ad);
  }
  for (int i = c.length()-1; i >=0; i--) {
   d+=c.charAt(i);
  }
  return d;
 }
 public static String bigMu(String a,int b){
  StringBuilder c = new StringBuilder();
  String d="";
  int e;
  int ad=0;
  int len=a.length();
  for (int i = len-1; i >=0; i--) {
   e=((int)a.charAt(i)-48)*b+ad;
   ad=e/10;
   e=e%10;
   c.append(e);
  }
  if(ad!=0) c.append(ad);
  for (int i = c.length()-1; i >=0; i--) {
   d+=c.charAt(i);
  }
  return d; 
 }
 public static String bigMul(String a,String b){
  int al=a.length();
  int bl=b.length();
  String c = "",d;
  if(al>=bl){
   c=bigMu(a, (int)b.charAt(bl-1)-48);
   //System.out.println(c);
   for (int i = bl-2; i >=0; i--) {
    d=bigMu(a,(int)b.charAt(i)-48);
    for (int j = 0; j <bl-i-1; j++) {
     d+=0;
     //System.out.println(d);
    }  
    c=bigAdd(c, d); 
    //System.out.println(c);
   }
  }
  if(al<bl){
   c=bigMu(b, (int)a.charAt(al-1)-48);
     for (int i = al-2; i >=0; i--) {
      d=bigMu(b,(int)a.charAt(i)-48);
      for (int j = 0; j <al-i-1; j++) {
       d+=0;
       //System.out.println(d);
      }  
      c=bigAdd(c, d); 
      //System.out.println(c);
     }
  }
  return c;
 }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics