4 条题解

  • 1
    @ 2023-11-9 23:23:40
    #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;
    }
    
    • @ 2023-11-9 23:38:26

      大佬🎉️

    • @ 2023-11-29 19:56:40

      佬,好解法

    • @ 2024-10-16 20:04:28

      天才

    • @ 2024-12-10 0:18:20

  • 0
    @ 2023-10-10 21:17:21
    #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
      @ 2023-10-7 23:00:12
      #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
        @ 2023-9-24 21:39:16
        #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
        上传者