Cod sursa(job #1100647)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 7 februarie 2014 11:23:17
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;

const int N=1000001,mod=9973;
int v[N];
bool c[N];

ifstream f("ssnd.in");
ofstream g("ssnd.out");

void desc(long long n)
{
    int i;
    long long p,q,nr=1,s=1;
    for (i=1;v[i]*v[i]<=n;i++)
        if (n%v[i]==0)
        {
            for (p=1,q=v[i];n%v[i]==0;n/=v[i],p++,q*=v[i]);
            s=s*(q-1)/(v[i]-1)%mod;
            nr*=p;
        }
    if (n!=1)
    {
        s=s*(n+1)%mod;
        nr*=2;
    }
    g<<nr<<" "<<s<<"\n";
}

void ciur()
{
    c[0]=c[1]=true;
    for (int i=2;i*i<N;i++)
        if (!c[i])
            for (int j=i*i;j<N;j+=i)
                c[j]=true;
    for (int i=2;i<N;i++)
        if (!c[i])
            v[++v[0]]=i;
}

int main()
{
    ciur();
    long long t,n;
    f>>t;
    while (t--)
    {
        f>>n;
        desc(n);
    }
    return 0;
}