首页 > 代码库 > 题目1038:Sum of Factorials
题目1038:Sum of Factorials
千呼万唤死出来!!!!
此题的思路,多少有点接受不了,竟然让所给值逐一减去大值,再看所剩值是否为零来判断,
所以就需要一个值或数组来记录所有的阶乘和,那么问题来了,如何记录,如何求取。
我用的是num数组一边求取一边记录
还有一种利用外部函数int fact(int n)来调用的;
还有这种:需要眼力和经验
for(i = 1;i < 11;i ++){ number[i] = i * number[i -1]; }
还有一种更绝的:简直无语!!!!!!!
int f[10]={1,1,2,6,24,120,720,5040,40320,362880};
再来AC 的代码:
#include <iostream> using namespace std; int main() { int num[11]; int i,j,n; num[0] = 1; for(i = 1;i < 11;i ++){ num[i] = i * num[i -1]; } while(cin>>n) { if (n==0) { cout<<"NO"<<endl;continue; } for (i=10;i>=0;i--) { if (n>=num[i]) n-=num[i]; } if (n==0) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
题目1038:Sum of Factorials
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。