4 条题解
-
1
#include<iostream> using namespace std; int main() { int m,n; cin >> m; int a[10]={0}; a[0]=1; a[1]=2; a[2]=2*3; a[3]=2*3*4; a[4]=2*3*4*5; a[5]=2*3*4*5*6; a[6]=2*3*4*5*6*7; a[7]=2*3*4*5*6*7*8; a[8]=2*3*4*5*6*7*8*9; while(m--) { cin >> n; for(int i = 8 ; i >= 0 ; i--) { if(n-a[i]>=0) n=n-a[i]; else continue; } if(n == 0) { cout << "Yes" << endl; } else { cout << "No" << endl; } } return 0; }
-
0
#include<iostream> using namespace std; #include<stdio.h> int a[13]; int init() { a[1]=1; a[2]=2; a[3]=6; int i; for(i=4;i<=13;i++) { a[i]=a[i-1]*i; // a[i-1]+=a[i-2]; } } int juge(int n,int w ) { if(n==0) return 0; int n1=n; int i; for(int i=1;i<w;i++) { if(n>=a[i]&&n<a[i+1]) { if(juge(n-a[i],i)==0) return 0; } } return 1; } int main() { int t; init(); scanf("%d",&t); while(t--) { int n; scanf("%d",&n); if(juge(n,13)==0) { printf("Yes\n"); } else { printf("No\n"); } } }
-
0
#include<stdio.h> int main(){ int n,m; scanf("%d",&n); while(n--) { int a[9]={1,2,6,24,120,720,5040,40320,362880};//分别求出1~9的阶乘,存入数组中。 scanf("%d",&m);输入m. int t=0,i;t用来判断是否为阶乘之和数,1表示是阶乘之和数,0表示不是阶乘之和数。 for(i=8;i>=0;i--) { if(m>=a[i]) { m-=a[i]; }由小到大遍历数组,如果m大于其中一个元素,那就减去这个元素。 if(m==0) { t=1; break; }如果最后m减完结果为0,就为阶乘之和数。 } if(t==1) { printf("Yes\n"); } else { printf("No\n"); } } return 0; }
-
0
#include<stdio.h> int jiecheng(int x){ int result=1; for(int i=1;i<=x;i++){ result*=i; } return result; } int main(){ int m; scanf("%d",&m); while(m--){ int n; scanf("%d",&n); int flag=0; for(int i=9;i>=1;i--){ if(n-jiecheng(i)!=0&&n>jiecheng(i)){ n=n-jiecheng(i); }else if(n-jiecheng(i)==0){ flag=1; break; } } if(flag==0) printf("No\n"); else printf("Yes\n"); } return 0; }
- 1
信息
- ID
- 157
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 1198
- 已通过
- 200
- 上传者