考研机试 阶乘的和

news/2024/6/19 6:06:25 标签: 考研, 算法, 数据结构, c++

考研机试 阶乘的和

给定一个非负整数 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中查找


http://www.niftyadmin.cn/n/5346411.html

相关文章

制冷系统中的制冷剂加注量对制冷系统的影响

当系统中制冷剂过多时&#xff0c;明显的压缩机负载加大&#xff0c;工作电流增大&#xff0c;冷凝温度升高&#xff0c;冷凝压力也会升高。过多的制冷剂进入蒸发器&#xff0c;液态冷媒在蒸发器内不能充分蒸发&#xff0c;甚至液态冷媒回到压缩机内会造成液击&#xff0c;严重…

客户端请求+返回 服务端之间的请求和返回 实现rpc通信

背景&#xff1a; 1.无论什么类型的游戏&#xff0c;我们都会有rpc通信的需求。 2.由于客户端直连的是游戏服&#xff0c;如果工会&#xff0c;匹配之类的服务是单独的服务的话&#xff0c;必然要进行游戏服到业务服之间的转发&#xff0c;我们是否需要再转发时单独定义Req和Re…

Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用

前言 Go语言凭借低占用&#xff0c;高并发等优秀特性成为后台编程语言的新星&#xff0c;GoZero框架由七牛云技术副总裁团队编写&#xff0c;目前已经成为Go微服务框架里star数量最多的框架 本文记录讲述笔者一步步走通前台向后台发出请求&#xff0c;后台api调用rpc服务的相…

Android logcat日志分析

目录 一、简介二、logcat命令2.1 adb logcat 命令格式2.2 adb logcat 命令参数2.3 adb logcat 日志缓冲区2.4 adb logcat 格式化输出2.4.1 logcat -v brief2.4.2 logcat -v long2.4.3 logcat -v process2.4.4 logcat -v tag2.4.5 logcat -v raw2.4.6 logcat -v time2.4.7 logca…

SaaS在阿里云弹性伸缩策略方案

在阿里云上实施SaaS的弹性伸缩策略需要充分利用阿里云提供的弹性计算服务和自动化工具。以下是一种可能的SaaS在阿里云上的弹性伸缩策略方案&#xff1a; 1. 选择阿里云弹性计算服务 首先&#xff0c;选择适用于SaaS应用的阿里云弹性计算服务&#xff0c;例如云服务器ECS。确…

探索Topaz Video AI:提升视频质量的智能工具

Topaz Video AI是一款令人印象深刻的视频处理软件&#xff0c;利用先进的人工智能技术&#xff0c;为用户提供了改善视频质量的强大工具。无论是从低分辨率视频中提取细节&#xff0c;还是将普通视频转换为更高质量的高清视频&#xff0c;Topaz Video AI都能轻松应对。 Topaz …

【RabbitMQ】死信(延迟队列)的使用

目录 一、介绍 1、什么是死信队列(延迟队列) 2、应用场景 3、死信队列(延迟队列)的使用 4、死信消息来源 二、案例实践 1、案例一 2、案例二&#xff08;消息接收确认 &#xff09; 3、总结 一、介绍 1、什么是死信队列(延迟队列) 死信&#xff0c;在官网中对应的单词…

数列分段 Section II

题目描述 给定一个长度为N的正整数数列 A 1 ∼ N A_{1\sim N} A1∼N​&#xff0c;现要将其分成M&#xff08; M ≤ N M\leq N M≤N&#xff09;段&#xff0c;并要求每段连续&#xff0c;且每段和的最大值最小。最大值最小的定义如下&#xff1a;例如一个数列 4 2 4 5 1 4\…