poj 1775 Sum of Factorials
2010-10-17 11:11
393 查看
题意:判断一个数是否能够被表示为多个数阶乘的和。
例如:9 = 1!+2!+3!。但是并不要求阶乘是连续的。比如7 = 1!+3!7也满足条件。
思路:这道题目都可以用0,1背包来做,首先最多使用到10!,然后把1到10的阶乘的和都打表了。
但是这里从discuss里面得到了一个更好的算法,因为1!+2!+3!<4!,这情况的成立,
所以如果这个数能够表示成为多个数的阶乘,那么我们可以转换为这个数减去他能减掉的最大的阶乘的数是否能被表示。
详细的思路看代码:
这思路也算是神一般的思路了。。佩服想出这算法的人。
例如:9 = 1!+2!+3!。但是并不要求阶乘是连续的。比如7 = 1!+3!7也满足条件。
思路:这道题目都可以用0,1背包来做,首先最多使用到10!,然后把1到10的阶乘的和都打表了。
但是这里从discuss里面得到了一个更好的算法,因为1!+2!+3!<4!,这情况的成立,
所以如果这个数能够表示成为多个数的阶乘,那么我们可以转换为这个数减去他能减掉的最大的阶乘的数是否能被表示。
详细的思路看代码:
#include <stdio.h> int main() { int a[12]; int i; int n; a[0]=1; for(i=1;i<=10;i++) a[i]=i*a[i-1]; while(scanf("%d",&n)&&n>=0) { if(n==0) { printf("NO/n"); continue; } for(i=10;i>=0;i--) { if(n>=a[i]) n-=a[i]; } if(n==0) printf("YES/n"); else printf("NO/n"); } return 0; }
这思路也算是神一般的思路了。。佩服想出这算法的人。
相关文章推荐
- poj 1775 Sum of Factorials
- poj 1775 Sum of Factorials
- POJ 1775 Sum of Factorials (ZOJ 2358)
- UVALive2953 POJ1775 ZOJ2358 Sum of Factorials【打表+暴力+水题】
- zoj 2358,poj 1775 Sum of Factorials(数学题)
- POJ 1775 Sum of Factorials (ZOJ 2358)
- POJ 1775 Sum of Factorials 笔记
- POJ 1775 Sum of Factorials(数论)
- POJ 1775 Sum of Factorials
- zoj 2358 || poj 1775 Sum of Factorials
- poj 1775 && zoj 2358 Sum of Factorials
- POJ 1775 Sum of Factorials 二分模板
- poj 1775 Sum of Factorials 枚举子集
- POJ 1775 Sum of Factorials 数论,基础题
- POJ 1775 (ZOJ 2358) Sum of Factorials
- POJ 1775 (ZOJ 2358) Sum of Factorials
- poj 1775 -- Sum of Factorials ( 够坑 )
- zoj 2358||poj1775 Sum of Factorials(阶乘)
- POJ 1775 FZU 1106 LightOJ 1189 Sum of Factorials
- poj 1775 Sum of Factorials dfs