题目描述

有些数可以表示成若干个不同阶乘的和。例如,9=1!+2!+3!。小明对这些数很感兴趣,所以他给你一个正整数n,想让你告诉他这个数是否可以表示成若干个不同阶乘的和。

输入

输入包含多组测试数据。每组输入为一个非负整数n(n<=1000000),当n为负数时,输入结束。

输出

对于每组输入,如果n可以表示成若干个不同阶乘的和,则输出YES,否则输出NO。

样例输入

9

-1

样例输出

YES


和HDU2021类似,只不过需要先算出小于1000000的最大的阶乘

#include<stdio.h>
int main()
{
int a[11];
a[0]=1;
int n,i;
for(i=1;i<11;i++)
{
a[i]=1;
int s=i;
for(int j=s;j>0;j--)
{
a[i]*=j;
}
}
while(scanf("%d",&n)!=EOF)
{
int flag=0;
if(n<0) break;
if(n==0) printf("NO\n");
else
{
for(i=9;i>=0;i--)
{
if(n>=a[i])
{
n-=a[i];
}
if(n==0)
{
flag=1;
break;
}
}
if(flag!=0) printf("YES\n");
else printf("NO\n");
flag=0;
}
}
return 0;
}

最新文章

  1. Jquery制作--焦点图左右轮播
  2. OpenCascade Draw Test Harness
  3. SpringMVC学习(二)
  4. Windows自带.NET Framework版本大全
  5. TYVJ 1074 武士风度的牛
  6. Openwrt 初探
  7. C#中字符串与byte[]相互转换
  8. 分享一个安卓中异步获取网络图片并自适应大小的第三方程序(来自github)
  9. Android动画总结#补间动画(Tween Animation/View Animation) #帧动画(Frame Animation/Drawable Animation)#属性动画(PropertyAnimation)
  10. java去全半角空格,trim(), replaceAll(&quot; +&quot;,&quot;&quot;),replaceAll(&quot;\\s*&quot;, &quot;&quot;), replaceAll(&quot; | &quot;, &quot;&quot;)
  11. File字节流
  12. winPcap编程之获取适配器信息(二)
  13. 玩转Spring Cloud之配置中心(config server &amp;config client)
  14. Sql的行列(纵横表)转换
  15. 从零开始学 Web 之 DOM(七)事件冒泡
  16. 安卓程序代写 网上程序代写[原]Android中的回调Callback
  17. 使用Jmeter(三十)针对ActiveMQ JMS POINT TO POINT压力测试(转载)
  18. iOS Terminating app due to uncaught exception &amp;#39;NSInternalInconsistencyException&amp;#39;, reason: &amp;#39;unable to
  19. 基于Docker搭建LNMP环境(转)
  20. rsa 公钥 私钥

热门文章

  1. Python - os 文件/目录操作
  2. Unity3D中人物模型的构成
  3. LeetCode--191--位1的个数
  4. android--------阿里 Sophix移动热修复
  5. PHP函数总结 (二)
  6. php安装redis扩展全
  7. mysql日期查询大全
  8. Python并行(parallel)之谈
  9. poj 1182 (带权并查集)
  10. IOS UI总结