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;
}



【u239】整数分解的更多相关文章

  1. 整数分解 && 质因数分解

    输入整数(0-30)分解成所有整数之和.每四行换行一次. 一种方法是通过深度优先枚举出解.通过递归的方式来实现. #include <stdio.h> #include <strin ...

  2. POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)

    题意:给出a和b的gcd和lcm,让你求a和b.按升序输出a和b.若有多组满足条件的a和b,那么输出a+b最小的.思路:lcm=a*b/gcd   lcm/gcd=a/gcd*b/gcd 可知a/gc ...

  3. POJ 1811 Prime Test (Pollard rho 大整数分解)

    题意:给出一个N,若N为素数,输出Prime.若为合数,输出最小的素因子.思路:Pollard rho大整数分解,模板题 #include <iostream> #include < ...

  4. POJ1811_Prime Test【Miller Rabin素数测试】【Pollar Rho整数分解】

    Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 29193 Accepted: 7392 Case Time ...

  5. Light OJ 1341 Aladdin and the Flying Carpet Pollard_rho整数分解+DFS

    进入a b 多少努力p, q 使p*q == a && p < q && p >= b 直接大整数分解 然后dfs所有可能的解决方案劫持 #include ...

  6. Vijos 1033 整数分解(版本2)

    描述 整数分解(版本2) 一个正整数可以分解成若干个自然数之和.请你编一个程序,对于给出的一个正整数n(1<=n<=1500),求出满足要求的分解方案,并使这些自然数的乘积m达到最大. 例 ...

  7. PTA 7-1 整数分解为若干项之和(20 分)

    7-1 整数分解为若干项之和(20 分) 将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,….编程求出正整数N的所有整数分解式子. 输入格式: 每个 ...

  8. POJ2429_GCD &amp; LCM Inverse【Miller Rabin素数測试】【Pollar Rho整数分解】

    GCD & LCM Inverse Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9756Accepted: 1819 ...

  9. 整数(质因子)分解(Pollard rho大整数分解)

    整数分解,又称质因子分解.在数学中,整数分解问题是指:给出一个正整数,将其写成几个素数的乘积的形式. (每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数.) .试除法(适用于范 ...

  10. Miller-Rabbin 素性测试 和 Pollard_rho整数分解

    今天学习一下Miller-Rabbin  素性测试 和 Pollard_rho整数分解. 两者都是概率算法. Miller_Rabbin素性测试是对简单伪素数pseudoprime测试的改进. (ps ...

随机推荐

  1. 词向量 word2vec

    看的这一篇的笔记 http://licstar.net/archives/328 看不太懂. 要学的话,看这里吧,这里把一些资料做了整合: http://www.cnblogs.com/wuzhitj ...

  2. 在 Swift 專案中使用 Javascript:編寫一個將 Markdown 轉為 HTML 的編輯器

    原文:Using JavaScript in Swift Projects: Building a Markdown to HTML Editor 作者:GABRIEL THEODOROPOULOS ...

  3. PHP用socket连接SMTP服务器发送邮件

    PHP用socket连接SMTP服务器发送邮件 PHP用socket连接SMTP服务器发送邮件学习实验记录: 分析与SMTP会话的一般流程 1. HELO XXX \r\n //XXX就是自己起个名字 ...

  4. Python编写Appium测试用例(1)

    有段时间没有使用python编写测试用例了,很长时间以来,感觉appium这个测试工具确实不错,今天又重新拿起来,分享一下自己学习的一些用例,欢迎大家一起交流.学习! 1.登录客户端 #coding= ...

  5. Monkey (压力测试)-移动端手机压力测试工具 monkey以及monkeyrunner

    4. Monkey (压力测试) 这个是Android提供的系统工具.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种 ...

  6. Android RxJava基本流程和lift源码分析

    基本结构 我们先来看一段最基本的代码,分析这段代码在RxJava中是如何实现的. Observable.OnSubscribe<String> onSubscriber1 = new Ob ...

  7. Day2:字典

    一.定义 字典是一种“key-value”成对出现的数据类型,中间用冒号把key与value隔,不同的数据用逗号隔开,全部数据用大括号括起来 info = { 'stu1101': "Ten ...

  8. 微服务实战(六):选择微服务部署策略 - DockOne.io

    原文:微服务实战(六):选择微服务部署策略 - DockOne.io [编者的话]这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺点.随后的文章讨论了微服务不同 ...

  9. 用static 创建类的单例

    1.0 说明 通过函数调用new的static 类对象,由于static 对象只能初始化一次,由此构成单例运行. 2.0  直接代码 代码为windows,win32工程,因为只有一个文件,不上传工程 ...

  10. 【Codeforces Round #299 (Div. 2) A】 Tavas and Nafas

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟题 [代码] #include <bits/stdc++.h> using namespace std; map & ...