Cod sursa(job #1151646)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 24 martie 2014 11:40:58
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define N 1000001
#define mod 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int v[N];
bool c[N];
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;n%v[i]==0;p++)
            {
                q=v[i];
                n/=v[i];
                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]=1;
    for(int i=2;i*i<N;i++)
        if(c[i]==0)
            for(int j=i*i;j<N;j+=i)
                c[j]=1;
    for(int i=2;i<N;i++)
        if(c[i]==0)
            v[++v[0]]=i;
}
int main()
{
    ciur();
    long long t,n;
    f>>t;
    while (t--)
    {
        f>>n;
        desc(n);
    }
    return 0;
}