nyoj91 阶乘之和

来源:互联网 发布:asp.net crm源码 编辑:程序博客网 时间:2024/04/30 21:12

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=91 

不说这道题怎么难了,我是明明知道算法,但是我用代码实现时真的感觉好困难,特写此博客。 我自己写的代码:

 

 #include<stdio.h>main(){int i,j,s=1,a[15],m,f;for(i=1;i<10;i++){s=i*s;a[i]=s;}scanf("%d",&f);while(f--){    scanf("%d",&m);int biaoji=10;while(m>0){for(i=0;i<biaoji;i++){if(m<a[i]){biaoji=i-1;break;}if(i==biaoji-1)biaoji=i-1;}biaoji=i-1;m=m-a[i-1];if(m==0){printf("Yes\n");break;}if(biaoji==1){if(m==0){printf("Yes\n");break;}else{printf("No\n");break;}}}}}        

后来看了看别人的代码,再写时:

 #include<iostream>using namespace std;int main(){int n;int k[9]={1,2,6,24,120,720,5040,40320,362880};cin>>n;while(n--){bool flag=false;int m;cin>>m;for(int i=8;i>=0;i--){if(m>=k[i] && m>0)m-=k[i];if(m==0)flag=true;}if(flag)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}}        



这时才发现自己的代码能力是多么的弱,看来得时加油了