Cod sursa(job #1885691)

Utilizator AndreidgDragomir Andrei Valentin Andreidg Data 20 februarie 2017 11:11:14
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
using namespace std;
const int MOD=9973;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int prime[10003],k;
int n;
void getdiv(long long val)
{
    long long l=1,sol=1,nrdiv=1,p=1;
    int q=0;
    for(int i=2;i*i<=val;i++)
    {
        if(val%i==0)
        {
            q=0;
            p=1;
            l=(l*(i-1))%MOD;
            while(val%i==0)
            {
                q++;
                p=(p*i)%MOD;
                val=val/i;
            }
            p=(p*i)%MOD;
            p=(p+MOD-1)%MOD;
            sol=(sol*p)%MOD;
            nrdiv=nrdiv*(q+1);
            //g<<p<<" "<<l<<"\n";
        }
    }
    if(val>1)
    {
        p=(val*val+MOD-1)%MOD;
        sol=(sol*p)%MOD;
        l=(l*(val-1));
        nrdiv=nrdiv*2;
    }
    g<<nrdiv<<" "<<sol/l<<"\n";
}
int main()
{
    f>>n;
    long long val;
    for(int i=1;i<=n;i++)
    {
        f>>val;
        getdiv(val);

    }
    f.close();
    g.close();
    return 0;
}