Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define vi vector<int>
- #define fi first
- #define se second
- #define db double
- #define U unsigned
- #define P std::pair<int,int>
- #define ll long long
- #define pb push_back
- #define MP std::make_pair
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- ios_base::sync_with_stdio(false);cin.tie(NULL);
- int pri[10001];
- for(int i=1;i<=10000;i++)
- pri[i]=1;
- pri[1]=0;
- for(int i=2;i*i<=10000;i++)
- {
- if(pri[i]==1)
- {
- for(int j=i*i;j<=10000;j+=i)
- pri[j]=0;
- }
- }
- pri[4]=1;pri[27]=1;pri[3125]=1;
- vi v;
- for(int i=2;i<=10000;i++)
- {
- if(pri[i]==1)
- v.pb(i);
- }
- int m=v.size();
- int dp[m][10001];
- for(int i=0;i<=10000;i++)
- dp[0][i]=INT_MAX-1;
- for(int i=0;i<m;i++)
- dp[i][0]=0;
- for(int i=1;i<m;i++)
- {
- for(int j=1;j<=10000;j++)
- {
- if(v[i-1]<=j)
- dp[i][j]=min(1+dp[i][j-v[i-1]],dp[i-1][j]);
- else
- dp[i][j]=dp[i-1][j];
- }
- }
- int t;
- cin>>t;
- while(t--)
- {
- int n;
- cin>>n;
- int l=0;
- for(;l<v.size();l++)
- {
- if(v[l]>n)
- break;
- }
- cout<<dp[l][n]<<"\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement