Cod sursa(job #1990110)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 10 iunie 2017 15:34:23
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
#define tip long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int k,t,i,nd;
bitset<1000010> B;
tip p[80000],n,sd;
void ciur();
int main()
{
    ciur();
    f>>t;
    for(; t; t--)
    {
        f>>n;
        sd=1;
        nd=1;
        for(i=1; (i<=k)&&(p[i]*p[i]<=n); i++)
            if(n%p[i]==0)
            {
                tip e=1,u=1,s=1;
                for(; n%p[i]==0; n/=p[i])
                {
                    e++;
                    u*=p[i];
                    s+=u;
                }
                sd*=s;
                nd*=e;
            }
        if(n>1)
            sd*=n+1,nd*=2;
        g<<nd<<' '<<sd%9973<<'\n';
    }
    return 0;
}
void ciur()
{
    int i,j;
    p[++k]=2;
    for(i=3; i<=999; i+=2)
        if(!B[i])
        {
            p[++k]=i;
            for(j=i*i; j<=1000000; j+=2*i)
                B[j]=1;
        }
    for(; i<=1000000; i+=2)
        if(!B[i])
            p[++k]=i;

}