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 ");判定是否满足已知条件.

  • 相关阅读:
    /tmp 和 /var/tmp 的区别
    PostgreSQL AS不忽略大小写
    PostgreSQL 命令
    DB Stack Overflow
    组合唯一约束
    python3学习笔记(9)_closure
    python3学习笔记(8)_sorted
    python3学习笔记(7)_listComprehensions-列表生成式
    python3学习笔记(6)_iteration
    python3学习笔记(5)_slice
  • 原文地址:https://www.cnblogs.com/HRuinger/p/3627074.html
Copyright © 2011-2022 走看看