考虑一下写在纸上的数字1到n的排列。让我们将其元素的乘积表示为 p,将其元素的总和表示为 s。给定一个正整数 n,您的任务是确定 p 是否可被 s 整除。
我尝试使用bigInteger概念,但在50个测试用例中,有30个成功通过,但其余的都显示超时,这可能是因为递归。
import java.util.*;
import java.math.BigInteger;
public class TestClass {
static BigInteger factorial(int n){
if(n==0||n==1)
return new BigInteger("1");
return BigInteger.valueOf(n).multiply(factorial(n-1));
}
public static void main(String args[] ) throws Exception {
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int nn=n*(n+1)/2;
BigInteger sum=BigInteger.valueOf(nn);
BigInteger p=factorial(n);
if((p.mod(sum)).equals(BigInteger.valueOf(0)))
System.out.println("YES");
else
System.out.println("NO");
}
}
对于示例测试用例,输入为 3,其输出应为“YES”,因为 (1+2+3) 除以 (1*2*3)。
莫回无
LEATH
largeQ
相关分类