1 条题解
-
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; }
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
- 上传者