Cod sursa(job #1190372)

Utilizator armandpredaPreda Armand armandpreda Data 25 mai 2014 11:01:10
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <algorithm>
#define LIM 4000000
#define MOD 9973

using namespace std;

int p[LIM+10];
void prim()
{
    int i,j,k=0;
    for(i=2;i<=LIM;++i)
        if(p[i]==0)
        {
            k++,p[k]=i;
            for(j=i+i;j<=LIM;j=j+i)
                p[j]=1;
        }
}
int main()
{
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    int t,n,i;
    long long nr,s,exp;
    prim();
    scanf("%d",&t);
    while(t--)
    {
        nr=1,s=0;
        scanf("%d",&n);
        for(i=1;p[i]<=n;++i)
        {
            exp=0;
            while(n%p[i]==0)
                exp++,n=n/p[i];
            if(exp)
                {
                    nr=nr*(exp+1);
                    s=s+1ll*((pow(p[i],exp+1)-1)/(p[i]-1))%MOD;
                }

        }
        printf("%lld %lld\n",nr,s);
    }
    return 0;
}