Cod sursa(job #1746976)

Utilizator Costel_DraghiciDraghici Constantin Costel_Draghici Data 24 august 2016 12:04:48
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <stdio.h>
#define MOD 9973
#define Nmax 1000000

using namespace std;
bool v[Nmax];
int a[Nmax/2];
void snd(long long n)
{
    int k=1,nr=1,s=1;
    while(n>1)
    {
        int d=0,x=a[k];
        while(n%a[k]==0)
        {
            d++;
            n/=a[k];
            x*=a[k];
        }
        if(d>0)
        {nr=nr*(d+1);
        s=(s*(x-1)/(a[k]-1))%MOD;}
        k++;

    }
    printf("%d %d\n",nr,s);
}

int main()
{
    int t,k=1;
    long long n;
    for(int i=2;i<=Nmax;i++)
        if(!v[i])
    {
        a[k++]=i;
        for(int j=2;j*i<=Nmax;j++)
            v[i*j]=1;
    }
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    scanf("%d",&t);
    for(int i=1;i<=t;i++)
    {
        scanf("%lld",&n);
        snd(n);
    }
}