Cod sursa(job #767390)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 13 iulie 2012 14:09:29
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include<cstdio>
#include<bitset>
#define mod 9973
using namespace std;
bitset<1000010>C;
int P[100000],p,t,ts,Nr,e;;
long long S,s,n;
void ciur(),read(),solve();
int main()
{
    int i;
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    ciur();
    scanf("%d", &t);
    for(;t;t--)
    {
        scanf("%lld",&n);
        Nr=1;
        S=1;
        for(i=1;P[i]*P[i]<=n&&i<=p;i++)
            if(n%P[i]==0)
            {
                s=1;
                e=0;
                ts=1;
                while(n%P[i]==0)
                {
                    e++;
                    ts*=P[i];
                    s+=ts;
                    n/=P[i];
                }
                Nr*=(e+1);
                S=(S*s)%mod;
            }
        if(n!=1)
        {
            Nr*=2;
            S=(S*(n+1))%mod;
        }
        printf("%d %lld\n", Nr, S);

    }
    return 0;
}
void ciur()
{
    int i,j,k;
    P[++p]=2;
    for(i=3;i<=1000;i+=2)
        if(!C[i])
        {
            P[++p]=i;
            k=2*i;
            for(j=i*i;j<=1000000;j+=k)
                C[j]=1;
        }
    for(i=1001;i<=1000000;i+=2)
        if(!C[i])
            P[++p]=i;
}