考研机试 阶乘的和

考研机试 阶乘的和

给定一个非负整数 n,请你判断是否存在一些整数 xi,能够使得 n=∑1≤i≤txi!,其中 t≥1,xi≥0,xi=xj iff i=j。iff表示当且仅当。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个非负整数 n。
最后一行是一个负数,表示输入结束,无需处理。
输出格式
每组数据输出一行结果,如果 n
能表示为若干数的阶乘之和,则输出 YES,否则输出 NO。
数据范围
0≤n≤106,
每组输入最多包含 100组数据。
输入样例:
9
-1

用set空间换时间 把所有可能性都生成好

#include <stdio.h>
#include <set>
#include <vector>
using namespace std;
int main(){
   
    vector<int> fA;
    fA.push_back(1);
   int curfA=1;
    for(int i=1;i<=9;++i){
   
        curfA=curfA*i;
        fA.push_back(curfA);
    }
    set<int> allpossible;
    allpossible.insert(0);
    for(int i=0;i<=9;++i){
   
        set<int> tempSet;
        set<int>::iterator it;
        for(it=allpossible.begin();it!=allpossible.end();++it){
   
            tempSet.insert(*it+fA[i]);
        }
        for(it=tempSet.begin();it!=tempSet.end();++it){
   
            allpossible.insert(*it);
        }

    }allpossible.erase(0);
    int n;
    while(scanf("%d",&n)!=EOF){
   
        if(n<0){
   
            break;
        }
        //需要计算从0!开始计算阶乘 和至少有一项
        //xi=xj,i=j 阶乘不能重复 阶乘范围小于100万 阶乘的范围是0到9的阶乘
        if(0==allpossible.count(n)){
   
            printf("NO\n");
        }else if(1==allpossible.count(n)){
   
            printf("Yes\n");
        }
    }


}

思路 利用set将所有的情况都提前存储 根据每个输入的数据在set中查找

相关推荐

  1. 2024-01-26 09:38:03       52 阅读
  2. WERTYU

    2024-01-26 09:38:03       46 阅读
  3. 链表合并

    2024-01-26 09:38:03       42 阅读
  4. 手机键盘

    2024-01-26 09:38:03       59 阅读
  5. 成绩排序

    2024-01-26 09:38:03       48 阅读
  6. 三元组

    2024-01-26 09:38:03       55 阅读
  7. 试题

    2024-01-26 09:38:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 09:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 09:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 09:38:03       82 阅读
  4. Python语言-面向对象

    2024-01-26 09:38:03       91 阅读

热门阅读

  1. 五种单例模式

    2024-01-26 09:38:03       47 阅读
  2. Midjourney 生成图片教程

    2024-01-26 09:38:03       90 阅读
  3. C++(1) 命名空间

    2024-01-26 09:38:03       51 阅读
  4. 牛刀小试 - C++ 推箱子小游戏

    2024-01-26 09:38:03       58 阅读
  5. Android - 持久化方案

    2024-01-26 09:38:03       45 阅读
  6. MOJO中导入python模块

    2024-01-26 09:38:03       50 阅读
  7. 人工智能相关的政策文件都有哪些?--九五小庞

    2024-01-26 09:38:03       53 阅读
  8. Git管理秘籍:Python项目中的.gitignore策略

    2024-01-26 09:38:03       42 阅读
  9. Git命令总结

    2024-01-26 09:38:03       62 阅读
  10. PyTorch中self.layers的作用

    2024-01-26 09:38:03       43 阅读
  11. linux常用基础命令最新版

    2024-01-26 09:38:03       44 阅读
  12. linux bash shell的getopt以及函数用法小记

    2024-01-26 09:38:03       57 阅读