码迷,mamicode.com
首页 > 其他好文 > 详细

阶乘之和

时间:2016-08-11 22:41:15      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

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

输入

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

输出

如果符合条件,输出Yes,否则输出No;

样例输入

2
9
10

样例输出

Yes
No
# include <stdio.h>  
int fac(int n);  
int main(void)  
{  
    int i;  
    int sfac[10];  
    for (i = 1; i <= 9; i++)  
    {  
        sfac[i] = fac(i); 
    }  
    int m;  
    scanf("%d", &m);  
    while (m--)  
    {  
        int n;  
        scanf("%d", &n);  
        int sum = 0;  
        for (i = 9; i >= 1; i--)
        {         
            if (sfac[i] <= n)  
            {  
                int flag = i;  
                sum += sfac[i];  
                if (sum >= n)  
                {  
                    if(sum == n)  
                    {                          
                        break;  
                    }  
                    if (i != 0)  
                    {  
                        sum -= sfac[i];  
                        i = flag;  
                    }  
                }  
            }  
        }  
        if (sum == n)  
        {  
            printf("Yes\n");  
        }  
        else  
        {
            printf("No\n");  
         }  
    }  
        return 0;  
}  
      
    int fac(int n)  
    {  
        if (n == 1)  
            return 1;  
        else   
            return n* fac( n-1);  
    }  

 

阶乘之和

标签:

原文地址:http://www.cnblogs.com/tong69/p/5762652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!