【u239】整数分解
2024-09-08 11:13:45
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
某些数能表示成为一些互不相同的整数的阶乘之和。如9=l!+2! +3!。 现在给定一个非负整数n,要求判断n能否表示成为一些互不相 同的非负整数的阶乘之和,如果能,则输出“YES",否则输出“N0”(引号不输出)。
【输入格式】
输入文件中每行一个非负整数n(n≤1000000),最后一行是一个负数,作为输入的结束。
【输出格式】
对输入文件中的每个非负整数n,在输出文件中分别输出“YES”或“N0”,各占l行。(引号不输出)
【数据规模】
Sample Input1
9
5
-1
【题解】
对于n >=3;n!> (n-1)!+(n-2)!+(n-3)!....
eg:
0!=1 1!=1 2!=2 3!= 6
3 !>0!+1!+2!
根据这个原理,我们可以从9递减到1进行枚举。(10!>100W),只要这个数字能够减去i!,则一定要减。否则后面的数加起来都不能和i!一样大。因此 规则就是遇到能减就减。
如果减完一次i!之后还能再减同样的i!,那么就无解了(要求数字要不同);最后判断一下答案是否为0就好。
n<=2的情况是
2 1 1,如果2可以减,那么就减。剩下两个1,可以一个一个减。又都是整数。所以如果有解,是一定不会漏掉的。
【代码】
#include <cstdio>
#include <cstring>
#define maxn 19 int n,a[11]; void input_data()
{
a[0] = 1;
for (int i = 1;i <= 10;i++) //先预处理出1!-10!的值存在a数组中
a[i] = a[i-1] *i;
int x;
scanf("%d",&x); //输入数字,如果不为负数就继续.
while (x >= 0)
{
int temp = x;
bool flag = true;
for (int i = 9;i >=0;i--) //进行枚举
{
if (temp >= (a[i+1] + 10)) //如果减完上一个数字还能继续减上一个数字,就输出无解
{
flag = false;
break;
}
if (temp >= a[i]) //如果能减就减。不能减的就跳过。
temp-=a[i];
}
if (flag && temp == 0 && x!=0) //如果刚好减完就输出有解信息。
printf("YES\n");
else
printf("NO\n");
scanf("%d",&x);
}
} int main()
{
input_data();
return 0;
}
最新文章
- P3369 【模板】普通平衡树(Treap/SBT)
- SDUT 3568 Rock Paper Scissors 状压统计
- vue之nextTick全面解析
- Shrinking images on Linux
- 高级查询query
- Summer sell-off CodeForces - 810B (排序后贪心)
- python批量解析域名a记录
- Jquery 获取 radio选中值,select选中值
- JMeter-充值-生成随机数
- javascript中forEach()和jquery中each()的区别
- Unity3D加密保护案例分享(一)
- 4步win7下简单FTP服务器搭建(试验成功)
- sql server 根据身份证号计算出生日期和年龄的存储过程
- day 06 列表去重, 数据类型的补充,编码,深浅copy
- Algorithms: Design and Analysis, Part 1 - Problem Set 1 - Question 5
- Jquery各版本下载
- C#获取外网IP、本机MAC地址及Ping的实现
- Linux下 split 划分文件 和 cat 合并文件
- SaltStack远程执行shell脚本
- HDU - 1134 Game of Connections 【DP】
热门文章
- Spark源代码分析之中的一个:Job提交执行总流程概述
- android adb常见问题的解决方法!
- 91.生成ini文件并写入和读取ini文件
- jsonp跨域实例丨利用百度数据制作搜索页面
- React组件之间通过Props传值的技巧(小案例,帮助体会理解props、state、受控组件和非受控组件等)
- Monkey (压力测试)-移动端手机压力测试工具 monkey以及monkeyrunner
- js进阶 12-18 jquery如何实现自定义右键菜单(把问题分细)
- POS的一点杂笔
- hdu 5078 Osu!(鞍山现场赛)
- swift项目第八天:自定义转场动画以及设置titleView的状态