1 条题解

  • 0
    @ 2025-4-7 21:41:51

    C :

    #include<stdio.h>
    
    int main()
    {
    	int n,a[10]={1,1,2,6,24,120,720,5040,40320,362880},i;
    	while(scanf("%d",&n)!=EOF,n>=0)
    	{
    		if(!n)
    			puts("NO");
    		else
    		{
    			for(i=9;i>=0;i--)
    				if(n>=a[i])
    					n-=a[i];
    			puts(n?"NO":"YES");
    		}
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    
    int main()
    {
    	int n,a[10]={1,1,2,6,24,120,720,5040,40320,362880},i;
    	while(scanf("%d",&n)!=EOF,n>=0)
    	{
    		if(!n)
    			puts("NO");
    		else
    		{
    			for(i=9;i>=0;i--)
    				if(n>=a[i])
    					n-=a[i];
    			puts(n?"NO":"YES");
    		}
    	}
    	return 0;
    }
    

    Java :

    
    import java.text.DecimalFormat;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Scanner;
    import java.math.*;
    
    public class Main {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner in = new Scanner(System.in);
    		// String[] zong = in.nextLine().split(" ");
    
    		int[] k = {1,1,2,6,24,120,720,5040,40320,362880};
    
    	//	System.out.println(k[9]);
    		while (in.hasNext()) {
    			String[] zong = in.nextLine().split(" ");
    			int a = Integer.parseInt(zong[0]);
    			if (a < 0) {
    				break;
    			}
    			if (a == 0) {
    				System.out.println("NO");
    				continue;
    			}
    			
    			for (int i = 9; i >= 0; --i){
    				if (a >= k[i])
    					a -= k[i];
    			}
    			if (a == 0)
    				System.out.println("YES");
    			else
    				System.out.println("NO");
    		
    	}
    	}
    
    	public static int jc(int i) {
    		int k = 0;
    		if (i == 0) // 0的阶乘=1
    			return 1;
    		else if (i > 0) {// 0继续递归
    			k = i * jc(i - 1);
    		}
    		return k;
    	}
    }
    

    Python :

    fs=[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
    def issumfactorial(n,issum="NO"):
        global fs
        _fs=fs[:]
        while n and _fs!=[]:
            a=_fs.pop()
            if n>=a:
                n-=a
            if n==0:
                issum="YES"
        return issum
    def main():
        n=input()
        while n>=0:
            print issumfactorial(n)
            n=input()
    main()
    
    • 1

    信息

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