Cod sursa(job #1039494)

Utilizator narcis_vsGemene Narcis - Gabriel narcis_vs Data 23 noiembrie 2013 09:52:15
Problema Descompuneri Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>
#include <map>

using namespace std ;
map < long long ,int > HASH;
const char In[]="desc.in";
const char Out[]="desc.out";
long long n,dp[4100][4100] , v[4100];
int k, nr;
inline void Read()
{
    ifstream f(In);
    f >> n >> k;
    f.close();
}

inline void Desc(const long long n)
{
    long long i;
    for(i = 1;1LL*i*i<n; ++i)
        if(n%i==0)
        {
            v[++v[0]] = i;
            v[++v[0]] = n/i;
        }
    if(1LL*i*i==n)
        v[++v[0]] = i;
}
ofstream g(Out);
inline void Solve()
{
    int i , j;
    nr = v[0];
    sort(v+1,v+nr+1);
    for(i = 1 ;i <= nr; ++i)
        HASH[v[i]] = i;
    for(i = 2;i <= nr;++i)
    {
        dp[i][i] = 1;
        for(j = i-1; j > 1;--j)
        {
            dp[i][j] = dp[i][j+1];
            if(v[i]%v[j]==0)
                dp[i][j]+=dp[HASH[v[i]/v[j]]][j];
        }
    }
    g<<dp[nr][2]<<"\n";
}

int main()
{
    Read();
    Desc(n);
    Solve();
    return 0;
}