第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這段代碼的哪一部分減慢了我的程序

這段代碼的哪一部分減慢了我的程序

慕妹3242003 2021-12-10 17:09:51
我正在使用以下代碼回答比賽問題:import java.io.DataInputStream;import java.io.FileInputStream;import java.io.IOException;import java.util.Scanner;import java.math.BigInteger;//ans is modulu 998244353public class ShiftAndAdd {    private static long mod = 998244353;    private static Scanner input = new Scanner(System.in);    public static void main(String[] args)throws IOException {        BigInteger ans=new BigInteger("0");        int n,m;        BigInteger numb_a,numb_b;        n= input.nextInt();        m=input.nextInt();        numb_a=input.nextBigInteger();        numb_b=input.nextBigInteger();        long[] a = new long[n];        long[] b = new long[m];        long[] a1 = new long[n];//will contain indices of cells of "a" containing 1's        long[] b1 = new long[m];        int ka1=0;//will be actual length of a1        int kb1=0;//will be actual length of b1        for(int i=0;i<n;i++) {            a[n-1-i]=numb_a.longValue()%10;            numb_a=numb_a.divide(new BigInteger("10"));        }        for(int i=0;i<m;i++) {            b[m-1-i]=numb_b.longValue()%10;            numb_b=numb_b.divide(new BigInteger("10"));        }        int a1start=(m>=n)?m-n:0;        ka1=a1start;        for(int i=0;i<n;i++)            if(a[i]==1)                a1[ka1++]=i;        int counter=0;        for(int i=0;i<m;i++)            if(b[i]==1)                b1[kb1++]+=++counter;            else b1[kb1++]=counter;        //answer:        for(int i=a1start;i<ka1;i++) {            ans=ans.add(BigInteger.valueOf((fastExp((long)2,(n-1-a1[i]))%mod *b1[(int)(a1[i]+a1start)] %mod)%mod));        }        print(ans.longValue());    }//end main但是,在線編譯器給了我超出某些輸入的時間限制(它向變量 numb_a 和 numb_b 輸入非常大的整數(shù))我的問題是我不知道時間限制在哪里超出,是在我閱讀整數(shù)是因為類 BigInteger 的方法很慢?還是因為這個類的 valueOf 和 add 方法很慢?我需要知道嘗試修復它的原因
查看完整描述

1 回答

?
慕仙森

TA貢獻1827條經(jīng)驗 獲得超8個贊

如果您不必使用 java.math.BigInteger 最好使用原始 long 代替,使用不可變對象有利于可擴展性,但由于您運行的線程不超過一個,因此不會從使用它中受益,但會得到GC 的缺點是,如果您使用對象比使用原語更多,則 GC 會更頻繁地工作。


查看完整回答
反對 回復 2021-12-10
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號