Рассмотрим перестановку чисел от 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, а его выходное значение должно быть «ДА». поскольку (1 + 2 + 3) делит (1 * 2 * 3).