두 대수 곱 하기. - 자바.

두 문자열 은 두 개의 매우 큰 수 를 표시 합 니 다. 알고리즘 을 설계 하여 이 두 개의 큰 수의 곱 을 계산 하고 결 과 는 문자열 로 표시 하 십시오.예 를 들 어 S1 = "78329749728409121217479209327", S2 = "1987432091904327543957", 디자인 알고리즘 은 S1 * S2 의 결 과 를 계산 한 결과 String 으로 출력 되 며 BigInter 를 사용 할 수 없습니다.
사고: 수공 으로 두 수 를 곱 하 는 과정 에 따라 코드 로 이 과정 을 실현 한다.
코드:
import java.util.Scanner;
public class DaZhengShuChengJi {
        public static void main(String[] args) {
            System.out.println(multiply(num1, num2));
        }
        public static String multiply(String num1, String num2) {
            int l = num1.length();
            int r = num2.length();
            //         ,                ,               。
            int[] num = new int[l+r];
            //        
            for(int i=0;i//        
                int n1=num1.charAt(l-1-i)-'0';
                //    
                int tmp=0;
                //        
                for(int j=0;jint n2=num2.charAt(r-1-j)-'0';
                    //             +        +      
                    tmp=tmp+num[i+j]+n1*n2;
                    //         
                    num[i+j]=tmp%10;
                    //     
                    tmp/=10;
                }
                //      ,     ,        
                num[i+r]=tmp;
            }

            int i=l+r-1;
            //             ,
            while(i>0&&num[i]==0){
                i--;
            }
            StringBuilder result="";
            //         ,        ,
           //      :1 2 3 4 5 
           //      54321,         。
            while(i>=0) {
                result += num[i--];
            }
           return result;
        }
}

다음으로 전송:https://www.cnblogs.com/loren-Yang/p/7466118.html

좋은 웹페이지 즐겨찾기