NYOJ 91 阶乘之和 (经典贪心算法)
地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=91
思路:贪心,最大到最小依次加~~
代码如下:
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int m,n,i,aim; 6 int a[11]; 7 memset(a,0,sizeof(a)); 8 a[1]=1; 9 for(i=2;i<=10;i++) //计算阶乘 10 a[i]=a[i-1]*i; 11 scanf("%d",&m); 12 while(m--) 13 { 14 scanf("%d",&n); 15 aim=n; 16 for(i=10;i>0;i--) 17 { 18 if(aim>=a[i]) 19 aim-=a[i]; 20 } 21 if(aim==0) puts("Yes"); 22 else puts("No"); 23 } 24 return 0; 25 } 26