做新网站的swot分析,网站制作的步骤不包括,汕头市建设局网站首页,网站开发中常见的安全漏洞考研机试 阶乘的和
给定一个非负整数 n#xff0c;请你判断是否存在一些整数 xi#xff0c;能够使得 n∑1≤i≤txi!#xff0c;其中 t≥1,xi≥0,xixj iff ij。iff表示当且仅当。 输入格式 输入包含多组测试数据。 每组数据占一行#xff0c;包含一个非负整数 n。 最后一行…考研机试 阶乘的和
给定一个非负整数 n请你判断是否存在一些整数 xi能够使得 n∑1≤i≤txi!其中 t≥1,xi≥0,xixj iff ij。iff表示当且仅当。 输入格式 输入包含多组测试数据。 每组数据占一行包含一个非负整数 n。 最后一行是一个负数表示输入结束无需处理。 输出格式 每组数据输出一行结果如果 n 能表示为若干数的阶乘之和则输出 YES否则输出 NO。 数据范围 0≤n≤106, 每组输入最多包含 100组数据。 输入样例 9 -1
用set空间换时间 把所有可能性都生成好
#include stdio.h
#include set
#include vector
using namespace std;
int main(){vectorint fA;fA.push_back(1);int curfA1;for(int i1;i9;i){curfAcurfA*i;fA.push_back(curfA);}setint allpossible;allpossible.insert(0);for(int i0;i9;i){setint tempSet;setint::iterator it;for(itallpossible.begin();it!allpossible.end();it){tempSet.insert(*itfA[i]);}for(ittempSet.begin();it!tempSet.end();it){allpossible.insert(*it);}}allpossible.erase(0);int n;while(scanf(%d,n)!EOF){if(n0){break;}//需要计算从0开始计算阶乘 和至少有一项//xixj,ij 阶乘不能重复 阶乘范围小于100万 阶乘的范围是0到9的阶乘if(0allpossible.count(n)){printf(NO\n);}else if(1allpossible.count(n)){printf(Yes\n);}}}思路 利用set将所有的情况都提前存储 根据每个输入的数据在set中查找