Cod sursa(job #1868915)

Utilizator unknownpersonBidasca Carina Georgiana unknownperson Data 5 februarie 2017 14:02:48
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t,p[500000],i,j,k,e,nd;
bitset<1000010>b;
long long sc,sd,n,pc;
int main()
{
    f>>t;
    k=1;
    p[k]=2;
    for(i=3; i<=1000; i+=2)
        if(b[i]==0)
        {
            k++;
            p[k]=i;
            for(j=i*i; j<=1000000; j+=2*i)
                b[j]=1;
        }
    for(; i<=1000000; i+=2)
        if(b[i]==0)
        {
            k++;
            p[k]=i;
        }
    for(;t;t--)
    {
        f>>n;
        nd=1;
        sd=1;
        for(i=1;i<=k&&1LL*p[i]*p[i]<=n;i++)
            if(n%p[i]==0)
        {
            e=1;pc=1;sc=1;
            while(n%p[i]==0)
            {
                e++;
                pc*=p[i];
                sc+=pc;
                n/=p[i];
            }
            nd*=e;
            sd=(sd*sc)%9973;
        }
        if(n>1)
        {
            nd*=2;
            sd=(sd*(n+1))%9973;
        }
        g<<nd<<' '<<sd<<'\n';

    }


    return 0;
}