Advertisement
Mohd__Messi

Hackerearth problem -Prime Numbers again

Apr 7th, 2021
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #define vi vector<int>
  2. #define fi first
  3. #define se second
  4. #define db double
  5. #define U unsigned
  6. #define P std::pair<int,int>
  7. #define ll long long
  8. #define pb push_back
  9. #define MP std::make_pair
  10. #include <bits/stdc++.h>
  11. using namespace std;
  12. int main()
  13. {
  14.     ios_base::sync_with_stdio(false);cin.tie(NULL);
  15.     int pri[10001];
  16.     for(int i=1;i<=10000;i++)
  17.      pri[i]=1;
  18.     pri[1]=0;
  19.     for(int i=2;i*i<=10000;i++)
  20.     {
  21.         if(pri[i]==1)
  22.         {
  23.         for(int j=i*i;j<=10000;j+=i)
  24.          pri[j]=0;
  25.         }
  26.     }
  27.     pri[4]=1;pri[27]=1;pri[3125]=1;
  28.     vi v;
  29.     for(int i=2;i<=10000;i++)
  30.     {
  31.         if(pri[i]==1)
  32.          v.pb(i);
  33.     }
  34.     int m=v.size();
  35.     int dp[m][10001];
  36.         for(int i=0;i<=10000;i++)
  37.          dp[0][i]=INT_MAX-1;
  38.         for(int i=0;i<m;i++)
  39.          dp[i][0]=0;
  40.         for(int i=1;i<m;i++)
  41.         {
  42.             for(int j=1;j<=10000;j++)
  43.             {
  44.                 if(v[i-1]<=j)
  45.                  dp[i][j]=min(1+dp[i][j-v[i-1]],dp[i-1][j]);
  46.                 else
  47.                  dp[i][j]=dp[i-1][j];
  48.             }
  49.         }
  50.     int t;
  51.     cin>>t;
  52.     while(t--)
  53.     {
  54.         int n;
  55.         cin>>n;
  56.         int l=0;
  57.         for(;l<v.size();l++)
  58.         {
  59.  
  60.             if(v[l]>n)
  61.              break;
  62.         }
  63.         cout<<dp[l][n]<<"\n";
  64.     }
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement