Cod sursa(job #1571214)

Utilizator cldmeClaudiu Ion cldme Data 17 ianuarie 2016 15:37:15
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
using namespace std;
int const M = 9973;
long long sum;

int numdiv(int x)
{
    int i,nr=1,p;
    long long pow;
    for(i=2; i*i<=x; i++)
    {
        if(x%i != 0) continue;
        p = 1;
        pow = i;
        while(x%i == 0)
        {
            x/=i;
            p++;
            pow *= i;
        }
        nr *= p;
        sum *= (pow - 1) / (i-1) % M;
    }
    if(x != 1)
    {
        nr *= 2;
        sum *= (x*x-1) / (x-1) % M;
    }
    return nr;
}

int main()
{
    int i,t,x;
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    scanf("%d",&t);
    for(i=1; i<=t; i++)
    {
        sum = 1;
        scanf("%d",&x);
        printf("%d ",numdiv(x));
        printf("%d\n",sum);
    }
    return 0;
}