POJ 1775 Sum of Factorials(数论)
2015-08-25 13:00
363 查看
Description
判断一个数是否能够被表示为多个数阶乘的和
Input
多组输入,每组一个非负数n(n<=1000000),以负数结束输入
Output
对于每组输入,判断其是否能被表示为多个阶乘的和,能则输出YES,不能则输出NO
Sample Input
9
-1
Sample Output
YES
Solution
因为1!+2!+3!<4!,这情况的成立,所以如果这个数能够表示成为多个数的阶乘,那么我们可以转换为这个数减去他能减掉的最大的阶乘的数是否能被表示,因为n最大为1000000,所以首先打个1~10的阶乘表
Code
判断一个数是否能够被表示为多个数阶乘的和
Input
多组输入,每组一个非负数n(n<=1000000),以负数结束输入
Output
对于每组输入,判断其是否能被表示为多个阶乘的和,能则输出YES,不能则输出NO
Sample Input
9
-1
Sample Output
YES
Solution
因为1!+2!+3!<4!,这情况的成立,所以如果这个数能够表示成为多个数的阶乘,那么我们可以转换为这个数减去他能减掉的最大的阶乘的数是否能被表示,因为n最大为1000000,所以首先打个1~10的阶乘表
Code
#include<stdio.h> int main() { int a[12],n; a[0]=1; for(int i=1;i<11;i++)//打表 a[i]=a[i-1]*i; while(scanf("%d",&n)&&n>=0) { if(n==0)//0显然不满足条件 { printf("NO\n"); continue; } for(int i=10;i>=0;i--) if(n>=a[i])//能减就减 n-=a[i]; if(n==0) printf("YES\n");//满足条件 else printf("NO\n");//不满足条件 } return 0; }
相关文章推荐
- Hadoop2.7启动报Error: JAVA_HOME is not set and could not be found解决办法
- 成为产品经理之前
- IOS 获取网络图像尺寸 更改 图像色彩值 什么一套方法灰色
- VC为控件加ToolTip工具提示方法总结
- Linux下tomcat运行第一个web项目
- POJ 1753 Flip Game(枚举)
- Java缓冲区之输入输出流
- Zookeeper Api(java)入门与应用
- MFC之模态与非模态对话框的创建与销毁
- 输入控件的键盘回收操作
- 160. Intersection of Two Linked Lists
- jQuery+PHP实现浏览更多内容
- JVM垃圾回收机制
- JVM垃圾回收机制
- [搜索]hdu5355
- 程序架构过渡资料
- Swift 枚举
- Java基础笔记-String类
- hdu 3555 Bomb(数位dp)
- 自学 iOS 开发的一些经验