比如要写如下4个函数
1.SUM(n) = 1 2 3 … n-1 n] 2.SUM1(n) = 1 (1 2) (1 2 3) … (1 2 3 … n-1 n) 3.FACT(n) = 1*2*3* . . . *(n-1) * n
4.FACT_SUM(n) = 1 1*2 1*2*3 … 1*2*3* . . . *(n-1) * n
用long连100都过不了,无比无比的长的数字,试一试BigInteger,第一次写在循环里面,有点不习惯
上代码
代码语言:javascript复制import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner;
public class test {
public static BigInteger sum(BigInteger n) {
return n.multiply(n.add(BigInteger.ONE)).divide(new BigInteger("2"));
}
public static BigInteger sum1(BigInteger n) {
BigInteger sum = BigInteger.ZERO;
BigInteger sum1 = BigInteger.ZERO;
n = n.add(BigInteger.ONE);
for (BigInteger i = BigInteger.ONE; i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
sum = sum.add(i);
sum1 = sum1.add(sum);
}
return sum1;
}
public static BigInteger fact(BigInteger n) {
BigInteger mul = BigInteger.ONE;
n = n.add(BigInteger.ONE);
for (BigInteger i = new BigInteger("2"); i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
mul = mul.multiply(i);
}
return mul;
}
public static BigInteger fact1(BigInteger n) {
BigInteger sum = BigInteger.ONE, mul = BigInteger.ONE;
n = n.add(BigInteger.ONE);
for (BigInteger i = new BigInteger("2"); i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
mul = mul.multiply(i);
sum = sum.add(mul);
}
return sum;
}
public static void main(String[] args) {
Scanner cin = new Scanner(new BufferedInputStream(System.in));
BigInteger big = new BigInteger(cin.next());
cin.close();
System.out.println(sum(big));
System.out.println(sum1(big));
System.out.println(fact(big));
System.out.println(fact1(big));
}
}