zoukankan      html  css  js  c++  java
  • 是否阶乘之和?

    1106 是否阶乘之和?

    题目描述

    输入一个整数N,判断其是否可以表示成一个正整数阶乘的形式或者几个不同正整数的阶乘之和。

    输入描述

    /*
    输入一个整数N。
    */
    4
    -1
    0
    6
    ^Z
    

    输出描述

    /*
    对应该整数N,若可以表示,输出YES,否则输出NO
    提示:单个整数阶乘的最大值到12!,即479001600。	
    */
    NO
    NO
    NO
    YES
    
    #include<stdio.h>
    #include<string.h>
    //判断某数是否为阶乘和
    int isFactorialSum(int n) {
        int k = 2;
        if (n <= 0){
            return 0;
        }
        else if (n== 1 || n==2){
            return 1;
        }
        if(n%2 == 1){ //阶乘都是偶数,递归判断
            return isFactorialSum(n-1);
        }
        while(1){
            if (n%k != 0){
              break;
            }
            while(n%k == 0){
                  n = n/k;
                  k++;
            }
            if(n == 1){
              return 1;
            }
            if(n<k){
              break;
            }
            n--;
        }
        return 0;
    }
    
    int main()
    {
        int n=0;
        while(scanf("%d",&n)!=EOF){
            if(isFactorialSum(n))
                printf("YES
    ");
            else
                printf("NO
    ");
        }
        return 0;
    }
    
    

    这题代码是复制网上大佬的,有点看不懂,有没有小伙伴可以交流下思路。

  • 相关阅读:
    Android天线信号刷新流程
    source insight配置
    android light sensor port
    wifi workflow
    vi/vim常用配置及使用命令
    contacts里QuickContactBadge弹出窗口
    ubuntu12.04与windows系统共享
    shell脚本编程
    凤凰照片的大小修改
    wf2
  • 原文地址:https://www.cnblogs.com/lwp-nicol/p/14279248.html
Copyright © 2011-2022 走看看