哈理工OJ 1425 阶乘问题(水题)
2016-08-16 18:08
411 查看
阶乘问题
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 164(82 users) Total Accepted: 87(76 users) Rating: Special Judge: No
Description
已知一个正整数n,请问能否将n表示成若干个不同的正整数的阶乘的和。
Input
输入包含多组测试数据。
对于每组测试数据:
第1行,包含一个正整数n (1 ≤ n ≤ 1018)
处理到文件结束
Output
对于每组测试数据:
如果能拆分,则输出YES,否则输出NO
Sample Input
5
7
Sample Output
NO
YES
Hint
7 = 1! + 3!
Author
齐达拉图@HRBUST
想到了就不难了。。。
下面是AC代码:
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 164(82 users) Total Accepted: 87(76 users) Rating: Special Judge: No
Description
已知一个正整数n,请问能否将n表示成若干个不同的正整数的阶乘的和。
Input
输入包含多组测试数据。
对于每组测试数据:
第1行,包含一个正整数n (1 ≤ n ≤ 1018)
处理到文件结束
Output
对于每组测试数据:
如果能拆分,则输出YES,否则输出NO
Sample Input
5
7
Sample Output
NO
YES
Hint
7 = 1! + 3!
Author
齐达拉图@HRBUST
想到了就不难了。。。
下面是AC代码:
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define ll long long #define maxn 1000000000000000000 ll a[105]; int main() { a[1]=1; int le; for(int i=2;i<=105;i++) { a[i]=i*a[i-1]; if(a[i]>=maxn) { le=i-1; break; } } ll n; while(~scanf("%lld",&n)) { for(int i=le;i>=1;i--) { if(a[i]<=n) { n=n-a[i]; } if(n==0) { break; } } if(n==0) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
相关文章推荐
- 南阳oj 题目65 另一种阶乘问题
- 南邮 OJ 1170 C阶乘问题
- hrbust 2234 哈理工oj 逆序对问题【树状数组+离散化】
- 哈理工OJ 1289 对数问题
- 哈理工OJ 2033 A Funny Game(博弈问题)
- 南阳理工OJ_另一种阶乘问题
- hrbust/哈理工oj 1877 区间【水题】
- 哈理工OJ 2003 棋盘(dp问题)
- 哈理工OJ 2285 Easy as a+b(位运算问题)
- hrbust/哈理工oj 2116 Maximum continuous product【水题】
- OJ刷题--3.2.1 Factorials 阶乘(大数的存贮问题)
- 哈理工OJ 1597 序列问题II【dp】【非递增子序列问题】
- 代码:swust oj 0083 阶乘问题
- 哈理工oj 1739 sort problem【思维、水题】
- hrbust 哈理工OJ 2010 二等队形【dp】【最长递减子序列问题】
- OJ常见问题及必须认识的对拍处理水题
- 阶乘之和(南阳oj91)(水题)
- hrbust 2147 哈理工oj 经理办公室【水题】
- hrbust 哈理工oj 2113 Count【STL水题】
- hrbust 1756/哈理工oj Merge Intervals【水题】