• Codeup1085: 阶乘的和


    题目描述
    有些数可以表示成若干个不同阶乘的和。例如,9=1!+2!+3!。小明对这些数很感兴趣,所以他给你一个正整数n,想让你告诉他这个数是否可以表示成若干个不同阶乘的和。

    输入
    输入包含多组测试数据。每组输入为一个非负整数n(n<=1000000),当n为负数时,输入结束。

    输出
    对于每组输入,如果n可以表示成若干个不同阶乘的和,则输出YES,否则输出NO。

    样例输入
    9
    -1

    样例输出
    YES


    和HDU2021类似,只不过需要先算出小于1000000的最大的阶乘

    #include<stdio.h>
    int main()
    {
        int a[11];
        a[0]=1;
        int n,i;
        for(i=1;i<11;i++)
        {
            a[i]=1;
            int s=i;
            for(int j=s;j>0;j--)
            {
                a[i]*=j;
            }
        }
        while(scanf("%d",&n)!=EOF)
        {
            int flag=0;
            if(n<0) break;
            if(n==0) printf("NO
    ");
            else
            {
                for(i=9;i>=0;i--)
                {
                    if(n>=a[i])
                    {
                        n-=a[i];
                    }
                    if(n==0)
                    {
                        flag=1;
                        break;
                     } 
                }
                if(flag!=0) printf("YES
    ");
                else printf("NO
    ");
                flag=0;
            }
        }
        return 0;
    }
  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    1236:区间合并
  • 原文地址:https://www.cnblogs.com/Friends-A/p/9309079.html
Copyright © 2020-2023  润新知