望庐山瀑布 @ 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
@鏡音リン
主要是没思路然后想到啥就写啥
我自己试了三个测试点都是对的 但是控制台出结果要十多秒