【蓝桥云课】阶乘之和

问题描述:
输入一个数,判断这个数能不能用互不相等的非负整数的阶乘的和来表示,例如9=1!+2!+3!

程序代码:

import java.util.Scanner;

public class JieOfSum {

	public static void main(String[] args) {
		//打表输出前10项斐波那契数列
		/**
		int fac = 1;
		for(int i=1;i<=10;i++) {
			fac = fac*i;
			System.out.print(fac+",");
		}
		**/
		int[] fac = {1,2,6,24,120,720,5040,40320,362880,3628800};
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int n=sc.nextInt();
			if(n<=0) {
				System.out.println("No");
				break;
			}
			for(int i=fac.length-1;i>=0;i--) {
				if(n>=fac[i]) {
					n=n-fac[i];
				}
			}
			if(n==0) System.out.println("Yes");
			else System.out.println("无解");
		}
	}
}

你可能感兴趣的:(蓝桥杯,java,算法,蓝桥杯)