Pagini recente » Cod sursa (job #1879529) | Cod sursa (job #202580) | Cod sursa (job #474145) | Istoria paginii utilizator/cozma_ana | Cod sursa (job #1010280)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("desc.in");
ofstream g("desc.out");
int d[3005],p[3005][3005],s[3005][3005],k=0,lex;
long long n;
void Divs()
{ int i;
for(i=2;i*i<=n;i++)
if (n%i==0)
{ k++;
d[k]=i;
if (n/i>i) {k++; d[k]=n/i;}
}
sort(d+1,d+k+1);
k++; d[k]=n;
//for(i=1;i<=)
}
void Dinamic()
{ int i,j,pos,t,sol=0;
p[1][1]=1;
for(j=1;j<=k;j++)
s[1][j]=1;
for(i=2;i<=k;i++)
{ p[i][i]=1;
pos=i; s[i][0]=0;
for(j=1;j<i;j++)
if (d[i]%d[j]==0)
{ while(d[pos]!=(d[i]/d[j]) && pos) pos--;
p[i][j]=s[pos][j];
s[i][j]=s[i][j-1]+p[i][j];
}
else s[i][j]=s[i][j-1];
s[i][i]=s[i][i-1]+1;
for(j=i+1;j<=k;j++)
s[i][j]=s[i][j-1];
}
/*for(i=1;i<=k;i++)
sol+=p[k][i];*/
g<<s[k][k];
}
int main()
{ f>>n>>lex;
Divs();
Dinamic();
return 0;
}