zoukankan      html  css  js  c++  java
  • ACM 阶乘之和

    阶乘之和

    时间限制: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 #include<stdio.h>
     2 int main(){
     3     int m,a[9]={1,2,6,24,120,720,5040,40320,362880};
     4     scanf("%d",&m);
     5     while(m--){
     6         int n,i,s=0;
     7         scanf("%d",&n);
     8         for(i=8;i>=0;i--){
     9             if(s+a[i]<=n) 
    10                 s+=a[i];
    11         }
    12         printf(s==n ? "Yes
    " : "No
    ");
    13     }
    14 }

    注解:
          1.首先声明一个数组a[9]存放1!,2!,3!,4!,5!,6!,7!,8!,9!阶乘的结果;便于后面直接运用;

          2.然后用scanf("%d",&n);
           for(i=8;i>=0;i--){
             if(s+a[i]<=n)
                s+=a[i];
           }

           进行相加与输入数字比较;

        3.最后用 printf(s==n ? "Yes " : "No ");判定是否满足已知条件.

  • 相关阅读:
    概率算法_二项分布和泊松分布
    数据库_存储过程简介(oracle版)
    机器学习算法_knn(福利)
    统计算法_概率基础
    统计算法_数值/线性关系度量
    Python总结
    Python 冒泡排序法分析
    Oracle练习详解
    LINUX基础了解
    LINUX下OA搭建
  • 原文地址:https://www.cnblogs.com/HRuinger/p/3627074.html
Copyright © 2011-2022 走看看