看来我用java偷个懒是不行了QAQ

P1045 [NOIP2003 普及组] 麦森数

望庐山瀑布 @ 2020-12-29 20:09:40

package p1045;
////////////////////未通过——全部超时
import java.util.Scanner;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int p = s.nextInt();
        BigInteger sum = new BigInteger(String.valueOf(1));
        for (int i = 0; i < p; i++) {
            sum = sum.multiply(new BigInteger(String.valueOf(2)));
        }
        sum = sum.subtract(BigInteger.valueOf(1));
        int len = sum.toString().length();
        System.out.println(len);
        if (len < 500) {
            for (int i = 0; i <= 500 - len; i++) {
                System.out.print(0);
            }
        } else {
            String str = sum.toString().substring(sum.toString().length() - 500);
            for(int i = 1; i < 500; i++) {
                if(i % 50 == 0) {
                    System.out.println();
                }
                System.out.print(str.charAt(i));
            }
        }
    }
}

by 鏡音リン @ 2020-12-29 20:22:39

第一问不是这么求的 是取对数

第二位是对10^500取模


by 鏡音リン @ 2020-12-29 20:22:53

是你做法问题 不是Java的问题


by 望庐山瀑布 @ 2020-12-30 13:43:57

@鏡音リン

主要是没思路然后想到啥就写啥

我自己试了三个测试点都是对的 但是控制台出结果要十多秒


|