2 条题解

  • 0
    @ 2026-4-20 16:12:52
    #include <bits/stdc++.h>
    using namespace std;
    #define d int
    #define For(x,y,z) for(int i=x;i<=y;i+=z)
    d n,k,ans,a[100];
    bool ss(int n){
        int k=sqrt(n);
        if(n<=1) return false;
        for(int i=2;i<=k;i++) if(n%i==0) return false;
        return true;
    }
    void dfs(int deep,int s,int l){
        if(l==k){
            if(ss(s)) ans++;
            return ;
        }
        if(deep==n+1) return ;
        dfs(deep+1,s+a[deep],l+1);
        dfs(deep+1,s,l);
    }
    int main(){
        cin>>n>>k;
        For(1,n,1) cin>>a[i];
        dfs(1,0,0);
        cout<<ans;
        return 0;
    }
    
    • 0
      @ 2026-4-16 16:47:51
      #include <bits/stdc++.h>
      using namespace std;
      #define d int
      d n,a[200],f[200][3];
      int main(){
          ios::sync_with_stdio(false);
          cin.tie(0);cout.tie(0);
          cin>>n;
          for(int i=1;i<=n;i++) cin>>a[i];
          for(int i=1;i<=n;i++){
              f[i][0]=max(f[i-1][0],max(f[i-1][1],f[i-1][2]));
              if(a[i]==1||a[i]==3) f[i][1]=max(f[i-1][0],f[i-1][2])+1;
              if(a[i]==2||a[i]==3) f[i][2]=max(f[i-1][0],f[i-1][1])+1;
          }
          cout<<n-max(f[n][0],max(f[n][1],f[n][2]));
          return 0;
      }
      
      • 1

      信息

      ID
      381
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      1
      已通过
      0
      上传者