zoj 2358||poj1775 Sum of Factorials(阶乘)

来源:互联网 发布:富士施乐mac驱动下载 编辑:程序博客网 时间:2024/06/05 10:00

题意:

给定一个数,问n能否由一些数的阶乘组成。


分析:

n<=1000000,还有时间限制2s。不是大数^_^. 11!=39916800.不会超出long范围 。一开始随手写了个,WA了好几次,感觉算法有点问题,去看了下poj关于此题的讨论。发现我是在实现的细节上出现问题了,算法本身对于这道题目来说没有错误。

> 不是数据规模小的问题,只是这里数据差别比较大,某数的值大于前面所以数的和,所以他的方法此处可行..
应该从大到小去比较减去。


#include <stdio.h>int main(){long fac(int m);long n,sum;int i,ff;while(scanf("%d",&n)!=EOF){sum=0;ff=0;if(n<0) break;if(n==0) {printf("NO\n");continue;}for(i=10;i>=0;i--){if(n>=fac(i)) n-=fac(i);if(n==0) {ff=1;break;}}if(ff==1) printf("YES\n");else printf("NO\n");}return 0;}long fac(int m){long f=1;int i;for(i=1;i<=m;i++)f*=i;return f;}





原创粉丝点击