結果

問題 No.219 巨大数の概算
ユーザー htensaihtensai
提出日時 2020-02-28 19:14:44
言語 Java21
(openjdk 21)
結果
AC  
実行時間 412 ms / 1,500 ms
コード長 1,909 bytes
コンパイル時間 2,604 ms
コンパイル使用メモリ 78,140 KB
実行使用メモリ 48,912 KB
最終ジャッジ日時 2024-10-13 16:32:35
合計ジャッジ時間 24,266 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 373 ms
48,228 KB
testcase_01 AC 363 ms
47,848 KB
testcase_02 AC 377 ms
48,208 KB
testcase_03 AC 352 ms
48,032 KB
testcase_04 AC 361 ms
48,068 KB
testcase_05 AC 125 ms
41,344 KB
testcase_06 AC 195 ms
45,536 KB
testcase_07 AC 126 ms
41,344 KB
testcase_08 AC 199 ms
45,720 KB
testcase_09 AC 108 ms
41,196 KB
testcase_10 AC 400 ms
48,088 KB
testcase_11 AC 379 ms
48,108 KB
testcase_12 AC 377 ms
47,868 KB
testcase_13 AC 407 ms
47,924 KB
testcase_14 AC 380 ms
48,024 KB
testcase_15 AC 406 ms
48,088 KB
testcase_16 AC 380 ms
48,076 KB
testcase_17 AC 412 ms
47,888 KB
testcase_18 AC 374 ms
48,144 KB
testcase_19 AC 375 ms
48,140 KB
testcase_20 AC 373 ms
47,876 KB
testcase_21 AC 387 ms
47,912 KB
testcase_22 AC 397 ms
48,204 KB
testcase_23 AC 394 ms
47,960 KB
testcase_24 AC 384 ms
47,668 KB
testcase_25 AC 378 ms
47,892 KB
testcase_26 AC 359 ms
48,012 KB
testcase_27 AC 375 ms
47,904 KB
testcase_28 AC 363 ms
48,688 KB
testcase_29 AC 358 ms
48,004 KB
testcase_30 AC 355 ms
48,000 KB
testcase_31 AC 372 ms
47,840 KB
testcase_32 AC 387 ms
47,904 KB
testcase_33 AC 366 ms
48,048 KB
testcase_34 AC 365 ms
48,828 KB
testcase_35 AC 363 ms
47,876 KB
testcase_36 AC 386 ms
48,064 KB
testcase_37 AC 383 ms
47,936 KB
testcase_38 AC 380 ms
48,912 KB
testcase_39 AC 358 ms
48,120 KB
testcase_40 AC 389 ms
47,792 KB
testcase_41 AC 374 ms
47,976 KB
testcase_42 AC 389 ms
47,928 KB
testcase_43 AC 362 ms
48,148 KB
testcase_44 AC 401 ms
48,036 KB
testcase_45 AC 399 ms
48,152 KB
testcase_46 AC 387 ms
47,868 KB
testcase_47 AC 393 ms
47,952 KB
testcase_48 AC 363 ms
48,260 KB
testcase_49 AC 370 ms
47,864 KB
testcase_50 AC 373 ms
47,696 KB
testcase_51 AC 115 ms
41,344 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;

public class Main {
    static final int MOD = 1000000007;
	public static void main (String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < n; i++) {
		    sb.append(calc(sc.nextInt(), sc.nextInt())).append("\n");
		}
		System.out.print(sb);
	}
	
	static String calc(double a, int b) {	
		BigNumber org = new BigNumber(a);
		int[] base = new int[31];
		BigNumber[] arr = new BigNumber[31];
		base[0] = 1;
		arr[0] = org;
		for (int i = 1; i < 31; i++) {
		    base[i] = base[i - 1] * 2;
		    arr[i] = arr[i - 1].pow();
		}
		BigNumber ans = new BigNumber(1.0);
		for (int i = 30; i >= 0; i--) {
		    if (b >= base[i]) {
		        ans = ans.mul(arr[i]);
		        b -= base[i];
		    }
		}
		int x = (int)(ans.x);
		int y = (int)(ans.x * 10) % 10;
		StringBuilder sb = new StringBuilder();
		return sb.append(x).append(" ").append(y).append(" ").append(ans.count).toString();
    }
    
    static class BigNumber {
        double x;
        long count;
        
        public BigNumber(double a) {
            x = a;
            while (x >= 10) {
                x /= 10;
                count++;
            }
        }
        
        public BigNumber(double x, long count) {
            this.x = x;
            this.count = count;
        }
        
        public BigNumber pow() {
            double y = x * x;
            long next = count * 2;
            while (y >= 10) {
                y /= 10;
                next++;
            }
            return new BigNumber(y, next);
        }
        
        public BigNumber mul(BigNumber another) {
            double y = x * another.x;
            long next = count + another.count;
            while (y >= 10) {
                y /= 10;
                next++;
            }
            return new BigNumber(y, next);
        }
    }
}
0