Cod sursa(job #1843285)

Utilizator raduzxstefanescu radu raduzx Data 8 ianuarie 2017 15:48:09
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
#define MOD 9973
bool v[1000004];
long long nrp[1000000];
long long putere(long long x,long long p)
{
    long long s=1,cx=1,i;
    for(i=1;i<=p;i++)
    {
        cx*=x;
        s+=cx;
        s%=MOD;
        cx%=MOD;
    }
    return s;
}
int main()
{
    long long t,i,j;
    f>>t;
    for(i=2;i<=99999;i++)
    {
        if(v[i]==0)
        {
            j=i;
            j+=i;
            while(j<=1000000)
            {
                v[j]=1;
                j+=i;
            }
        }
    }
    long long prim=0;
    for(i=2;i<=1000000;i++)
    {
        if(v[i]==0)
        {
            prim+=1;
            nrp[prim]=i;
        }
    }
    long long a,n,s,p,e,d,k;
    for(j=1;j<=t;j++)
    {
        f>>a;
        s=a;
        p=1;
        e=1;
        d=1;
        while(s>1)
        {
            k=0;
            while(s%nrp[d]==0)
            {
                s/=nrp[d];
                k+=1;
            }
            p*=(k+1);
            e*=putere(nrp[d],k);
            e%=MOD;
            d+=1;
        }
        g<<p<<" "<<e<<'\n';
    }
    f.close();
    g.close();
    return 0;
}