问题标题: 酷町堂:1199 阶乘之和

0
0
已解决
董妙一
董妙一
资深守护
资深守护

题目描述 Description

给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出YES,否则输出NO;

输入描述 Input Description

第一行有一个整数0<m<10000,表示有m组测试数据;
每组测试数据有一个正整数n<1000000;

输出描述 Output Description

如果符合条件,输出YES,否则输出NO;

样例输入 Sample Input

2 9 10

样例输出 Sample Output

YES NO


0
已采纳
被禁言 张皓轩
张皓轩
中级光能
中级光能
核心:
int jc(int n)
{
    int b=1;
    for(int i=1;i<=n;i++)
        b*=i;
        return b;
}
int main()
{
    int n; scanf("%d",&n);
    while(n--)
    {
        int m,b;
        scanf("%d",&m);
    for(int i=10;i>0;i--)
    {
        if(m>=jc(i)&&m>0)
        m-=jc(i);
        if(m==0)
         b=1;
        else
         b=0;
    }
    if(b==1)
    printf("YES\n");
    else
    printf("NO\n");
    }
    return 0;
}

 

0
我要回答