• NYOJ 91 阶乘之和(贪心原则:n的阶乘必大于(0~n-1)阶乘之和)


    阶乘之和

    时间限制:3000 ms  |           内存限制:65535 KB
    难度:3
     
    描述

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

     
    输入
    第一行有一个整数0<m<100,表示有m组测试数据; 每组测试数据有一个正整数n<1000000;
    输出
    如果符合条件,输出Yes,否则输出No;
    样例输入
    2
    9
    10
    样例输出
    Yes
    No
    
    代码:
     1  
     2 #include<cstdio>
     3 int main()
     4 {
     5     int facto[9]={1,2,6,24,120,720,5040,40320,362880},sum,i,m;
     6     scanf("%d",&m);
     7     while(m--)
     8     {
     9         scanf("%d",&sum);
    10         for(i=8;i>=0;i--)//n阶乘比前面n-1阶乘和大
    11             if(sum>=facto[i])
    12                sum-=facto[i];
    13             if(!sum) printf("Yes
    ");
    14             else printf("No
    ");
    15 
    16     }
    17   return 0;
    18 }
    19         
    View Code
  • 相关阅读:
    课堂测试-单元测试(比较大小)
    第三周进度条
    软件工程个人作业02
    构建之法——阅读笔记02
    第二周学习进度条
    第一周学习进度条
    软件工程个人作业01
    构建之法阅读笔记01
    java课堂测试
    Java验证码程序
  • 原文地址:https://www.cnblogs.com/luoshuihanbing/p/3288539.html
Copyright © 2020-2023  润新知