Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cmath>
- using namespace std;
- ifstream f("greselile.in");
- ofstream g("greselile.out");
- /// Se foloseste programarea dinamica, in dp[i] fiind raspunsul pentru nodul i.
- /// Se parcurge cu i de la 2 la n, si pentru fiecare multiplu a lui i(j),dp[j]=max(dp[j],dp[i])+1.
- int nrdiv(int n)
- {
- int d,exp=0; // p retine numarul divizorilor
- if(n%2==0)
- {
- while(n%2==0)
- {
- exp++;
- n=n/2;
- }
- }
- d=3;
- while(n>1)
- {
- if(n%d==0)
- while(n%d==0)
- {
- exp++;
- n=n/d;
- }
- else
- d+=2;
- if(n>1&&d*d>n)
- {
- ++exp;
- break;
- }
- }
- return exp;
- }
- int main()
- {
- int n,t,i;
- f>>n>>t;
- for(int k=0;k<t;++k)
- {
- f>>i;
- g<<nrdiv(i)<<'\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement