1 solutions

  • 0
    @ 2024-12-10 23:27:11

    C :

    #include<stdio.h>
    
    #define MAX 1000
     
    int main(void)
    {
        int n;
        while(scanf("%d",&n) == 1 && n >= 0)
        {
            int i,j;
            int a[MAX];      
            int p , add;          
            a[1] = 1;
            p = 1; 
            for(i = 2 ; i <= n ; ++i)  
            {
                for(j = 1 , add = 0 ; j <= p ; ++j)    
                {
                    a[j] = a[j] * i + add;
                    add = a[j] / 10;
                    a[j] = a[j] % 10;
                }
                while(add > 0)        
                {
                    a[j] = add % 10;
                    add = add / 10;
                    ++j;
                }
                p = j - 1;            
            }
            for(i = p ; i >= 2 ; --i)    
            {
                printf("%d",a[i]);
            }
            printf("%d\n",a[i]);
        }
        return 0;
    }
    

    C++ :

    #include<stdio.h>
    #include<string.h>
    const int MAXN=40000;//如果是10000的阶乘,改为40000就够了 
    int f[MAXN];
    int main()
    {
        int i,j,n;
        while(scanf("%d",&n)!=EOF)
        {
            memset(f,0,sizeof(f));
            f[0]=1;
            for(i=2;i<=n;i++)
            {
                int c=0;
                for(j=0;j<MAXN;j++)
                {
                    int s=f[j]*i+c;
                    f[j]=s%10;
                    c=s/10;
                }    
            } 
            for(j=MAXN-1;j>=0;j--) 
               if(f[j]) break;//忽略前导0
            for(i=j;i>=0;i--)  printf("%d",f[i]);
            printf("\n");   
        }    
        return 0;
    }
    

    Pascal :

    var
      i,j,n,w : longint;
      a : array[1..1000] 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
      {assign(input,'ni.in');  reset(input);
      assign(output,'ni.out');  rewrite(output);}
      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;
     { close(input);  close(output);}
    end.
    
    

    Java :

    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner cin=new Scanner(System.in);
    		int n=cin.nextInt();
    		BigInteger s=BigInteger.valueOf(1);
    		for (int i=1;i<=n;i++)
    		{
    			s=s.multiply(BigInteger.valueOf(i));
    		}
    		System.out.println(s.toString());
    	}
    }
    
    
    • 1

    Information

    ID
    605
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By