http://poj.org/problem?id=1775

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1334

题目大意:

给一个数n看看n是否能够拆成几个阶乘的和

如9=1!+2!+3!

方法一:

最初想法是直接打出0~10的阶乘,10的阶乘已经大于n的范围

然后DFS,也过了。不过时间好惨。。。

注意n=0输出NO和0!=1

#include<cstdio>
#include<cstring>
const int MAXN=10;
int temp[12]={1,1};
bool used[12];
bool ok;
void dfs(int cur,int sum,int target)
{
if(sum >target)
return; if(sum==target)
{
ok=true;
return ;
} for(int i=cur;i<=MAXN;i++)
{
if(used[i]==false)
{
used[i]=true;
dfs(i,sum+temp[i],target);
used[i]=false;
}
}
}
int main()
{ for(int i=2;i<=MAXN;i++)
temp[i]=temp[i-1]*i; int n;
while(scanf("%d",&n),n>=0)
{ if(n==0)
{
printf("NO\n");
continue;
}
memset(used,0,sizeof(used));
ok=false;
dfs(0,0,n); if(ok)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

方法二:

贪心。。

然后把不超过n的阶乘减去。

因为n! >= sum(1 ! + 2!+……n-1!)

#include<cstdio>
const int MAXN=10;
int main()
{
int temp[12]={1,1};
for(int i=2;i<=MAXN;i++)
temp[i]=temp[i-1]*i; int n;
while(scanf("%d",&n),n>=0)
{
if(n==0)
{
printf("NO\n");
continue;
}
for(int i=MAXN;i>=0;i--)
{
if(n >=temp[i])
n-=temp[i];
}
if(n==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

POJ 1775 Sum of Factorials (ZOJ 2358)的更多相关文章

  1. zoj 2358,poj 1775 Sum of Factorials(数学题)

    题目poj 题目zoj //我感觉是题目表述不确切,比如他没规定xi能不能重复,比如都用1,那么除了0,都是YES了 //算了,这种题目,百度来的过程,多看看记住就好 //题目意思:判断一个非负整数n ...

  2. POJ 1775 Sum of Factorials 数论,基础题

    输入一个小于1000000的正整数,是否能表达成式子:a1!+a2!+a3!+...+an (a1~an互不相等). 因为10!>1000000,所以先打1~10的阶乘表.从a[10]开始递减判 ...

  3. POJ 1775 (ZOJ 2358) Sum of Factorials

    Description John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematic ...

  4. 九度OJ 1038:Sum of Factorials(阶乘的和) (DP、递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1845 解决:780 题目描述: John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, ...

  5. poj 1564 Sum It Up (DFS+ 去重+排序)

    http://poj.org/problem?id=1564 该题运用DFS但是要注意去重,不能输出重复的答案 两种去重方式代码中有标出 第一种if(a[i]!=a[i-1])意思是如果这个数a[i] ...

  6. POJ 3090 Visible Lattice Points (ZOJ 2777)

    http://poj.org/problem?id=3090 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1777 题目大意: ...

  7. POJ 1707 Sum of powers(伯努利数)

    题目链接:http://poj.org/problem?id=1707 题意:给出n 在M为正整数且尽量小的前提下,使得n的系数均为整数. 思路: i64 Gcd(i64 x,i64 y) { if( ...

  8. POJ 1564 Sum It Up(DFS)

    Sum It Up Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  9. POJ 2235 Frogger / UVA 534 Frogger /ZOJ 1942 Frogger(图论,最短路径)

    POJ 2235 Frogger / UVA 534 Frogger /ZOJ 1942 Frogger(图论,最短路径) Description Freddy Frog is sitting on ...

随机推荐

  1. Android仿Win8界面的button点击

    今天没事的时候,感觉Win8的扁平化的button还是挺好看的,就研究了下怎样在安卓界面实现Win8的扁平化button点击效果. 发现了一个自己定义的View能够实现扁平化button效果,话不多说 ...

  2. LeetCode 136 Single Number(仅仅出现一次的数字)

    翻译 给定一个整型数组,除了某个元素外其余元素均出现两次. 找出这个仅仅出现一次的元素. 备注: 你的算法应该是一个线性时间复杂度. 你能够不用额外空间来实现它吗? 原文 Given an array ...

  3. 分享一些 WINDOWS 资源站点(备用)

    分享一些 WINDOWS 资源站点(备用) Windows Embedded  http://www.10down.net/windows-embedded.php Windows 7 SP1 Upd ...

  4. js39---组合模式,查找遍历树

    /** *有这样一个需求 *有一个学校有2个班(一班,二班) *每个班级分2个小组(一班一组,一班二组,二班一组,二班二组) *学校计算机教室有限,每一个小组分着来上课. *考试的时候大家一起考 *请 ...

  5. Git提交.net项目的小问题

    今天早上写了点关于asp.net core授权的东西,输入git add .的时候出现的报错 $ git add .error: open(".vs/DOTNETAuthorization/ ...

  6. C#string转换为Datetime

    DateTime.ParseExact("0710090000", "MMddHHmmss", CultureInfo.CurrentCulture, Date ...

  7. 5.Zookeeper的两种安装和配置(Windows):单机模式与集群模式

    转自:https://blog.csdn.net/a906998248/article/details/50815031

  8. 117.C语言实现桌面输出图片,桌面输出文字,桌面画线

    通过获取窗口句柄,然后获取窗口DC,然后画图 #include <Windows.h> #include <stdio.h> //桌面画线 void drawLine() { ...

  9. Flask项目之手机端租房网站的实战开发(九)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...

  10. Invalid property 'annotatedClasses' of bean class

    Invalid property 'annotatedClasses' of bean class 在整合Hibernate和Spring时出现,Invalid property 'annotated ...