1 条题解

  • 0
    @ 2025-4-7 21:19:28

    C :

    #include <stdio.h>
    int main()
    {
        int a[2570],c,i,j,m,n;
        while(scanf("%d",&n)!=EOF)
        {
            a[0]=1;
            m=0;
            for(i=1;i<=n;i++){
                c=0;
                for(j=0;j<=m;j++)
                {
                    a[j]=a[j]*i+c;
                    c=a[j]/10;
                    a[j]%=10;
                }
                while(c)
                {
                    m++;
                    a[m]=c;
                    c=a[m]/10;
                    a[m]%=10;
                }
            }
            for(i=m;i>=0;i--)
                printf("%d",a[i]);
    		printf("\n");
        }
           return 0;
    }
    

    C++ :

    #include <stdio.h>
    int a[1111111],n; 
    void run()
    {
    	int i,m,j,t=0;
    	a[0]=1;
    	for(i=1;i<=n;i++)
    	{
    		for(j=0;j<=t;j++)
    			a[j]*=i;
    		for(j=0;j<t;j++)
    		{
    			a[j+1]+=a[j]/10;
    			a[j]%=10;
    		}
    		while(a[t]>9)
    		{
    			a[t+1]=a[t]/10;
    			a[t]%=10;
    			t++;
    		}
    	}
    	for(i=t;i>=0;i--)
    		printf("%d",a[i]);
    	printf("\n");
    }
    int main()
    {
    	scanf("%d",&n);
    	while(n!=-1)
    	{
    		run();
    		n=-1;
    		scanf("%d",&n);
    	}
    	return 0;
    }
    

    Pascal :

    var
      i,j,n,w:longint;
      a:array[1..100000] of integer;
    
      procedure fact(k:longint);
      var
        x,i:longint;
      begin
        x:= 0;
        for i := 1 to w do
          begin
            a[i]:=a[i]*k+x;
        x := a[i] div 10;
        a[i] := a[i] mod 10;
      end;
      while x>0 do
      begin
        w := w+1;
        a[w] := x mod 10;
        x := x div 10;
      end;
    end;
    
    begin
      while not(eof) do
    begin
      a[1] := 1;
      w:=1;
      readln(n);
      for i := 1 to n do fact(i);
      for j := w downto 1 do write(a[j]);
      writeln;
    end;
    end.
    
    

    Java :

    import java.math.BigInteger;
    import java.util.Scanner;
    
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner scanner = new Scanner(System.in);
    		while (scanner.hasNext())
    		{
    			int n;
    			n = scanner.nextInt();
    			BigInteger sum = new BigInteger("1");
    			for (int i = 1; i <= n; i++)
    			{
    				sum = sum.multiply(new BigInteger(Integer.toString(i)));
    			}
    			System.out.println(sum.toString());
    		}
    	}
    
    }
    
    

    Python :

    def factorial(n):
      s = 1
      for i in range(n):
        s = s*int(i+1)
      return s
    
    if __name__ == "__main__":
      while True:
        a = int(raw_input())
        print factorial(a)
    
    • 1

    信息

    ID
    1113
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者