zoukankan      html  css  js  c++  java
  • NYOJ-91-阶乘之和

    http://acm.nyist.net/JudgeOnline/problem.php?pid=91

    阶乘之和

    时间限制: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

    解题思路: 预处理小于阶乘100W的,然后每个输入一个数n,将阶乘从大到小能减就减,最后判断是否等于0

     1 #include <stdio.h>
     2 #include <math.h>
     3 
     4 long long a[100], t;
     5 
     6 int main(){
     7     int n, m, i, j;
     8     a[0] = 1;
     9     i = 0;
    10     while(a[i] < 1000000){
    11         i++;
    12         a[i] = a[i - 1] * i;
    13     }
    14     scanf("%d", &m);
    15     while(m--){
    16         scanf("%d", &n);
    17         for(j = i - 1; j > 0; j--){
    18             if(n >= a[j]){
    19                 n -= a[j];
    20             }
    21         }
    22         if(n == 0){
    23             printf("Yes ");
    24         }
    25         else{
    26             printf("No ");
    27         }
    28     }
    29     return 0;

    30 } 

  • 相关阅读:
    RPC(简单实现)
    观察者模式
    自省(Introspector)
    Mybatis学习笔记
    Nginx
    AJAX跨域
    手写Tomcat
    监听器模式
    回调
    Temporal Segment Networks
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4055060.html
Copyright © 2011-2022 走看看