[NOIP 2003 普及组] 麦森数 Java

[NOIP 2003 普及组] 麦森数 Java_第1张图片

import java.util.*;
import java.math.BigInteger;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int p = sc.nextInt();
		sc.close();
		int num = (int) Math.floor(p * Math.log10(2)) + 1; // 位数
		BigInteger mod = BigInteger.TEN.pow(500); // 求最后500位,对10^5取模即可
		BigInteger bi = BigInteger.valueOf(2).pow(p).subtract(BigInteger.ONE).mod(mod); // 求出2^p-1并取模
		String str = bi.toString();
		while (str.length() < 500) {
			str = "0" + str; // 补充高位0
		}
		StringBuilder sb = new StringBuilder();
		sb.append(num + "\n");
		for (int i = str.length() - 500; i < str.length(); i += 50) {
			sb.append(str.substring(i, i + 50) + "\n");
		}
		System.out.println(sb);
	}
}

每日一水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

你可能感兴趣的:(java,开发语言)