输入一个整数a,计算这个1~a之间所有数的 阶乘总和。用三种方法写出来

输入一个整数a,计算这个1~a之间所有数的
阶乘总和。用三种方法写出来

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,n;
    long long ret = 1;
    long long sum = 0;
    scanf("%d",&n);
    for (i = 1; i <= n; i++)
    {
        ret *= i;
        sum += ret;
    }
    printf("sum = %lld\n", sum);
    return 0;
}
import java.util.Scanner;
public class Test{
   public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      int n = in.nextInt();
      double sum = 1,s=0;
      for(int i=1;i<=n;i++){
        sum = sum*i;
        s +=sum;
      }
      System.out.println("s="+s);
  }
}