Cod sursa(job #2679043)

Utilizator Diana_IonitaIonita Diana Diana_Ionita Data 29 noiembrie 2020 14:13:24
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <bits/stdc++.h>

using namespace std;
#define MOD 9973

int  putere[60],di[60],pd[60];
int  mod,suma,numar;
int ciur(int n)
{
    int i,numar,put,nr=0;
    numar=1;

    put=0;
    while(n%2==0)
    {
        n=n/2;
        numar=numar*2;
        put++;
    }
    if(put)
    {
        di[++nr]=2;
        numar*=2;
        putere[nr]=put%MOD;
        pd[nr]=numar%MOD;
    }
    for(i=3; i<=n; i+=2)
    {
        numar=1;

        put=0;
        while(n%i==0)
        {
            n=n/i;
            numar=numar*i;
            put++;
        }
        if(put)
        {
            di[++nr]=i%MOD;
            numar*=i;
            putere[nr]=put%MOD;
            pd[nr]=numar%MOD;
        }
    }
    return nr;
}
void rez(int x)
{
    int p,i;
    mod=1;
    suma=1;
    int nr= ciur(x);
    for(i=1; i<=nr; i++)
    {
        suma*=(pd[i]-1);        suma/=(di[i]-1);

        suma%=MOD;
        mod*=(putere[i]+1);
        mod%=MOD;
    }

    printf("%d %d",mod,suma);
    printf("\n");
}
int main()
{
    int n,a;
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);

    scanf("%d",&n);

    for(; n; n--)
    {
        scanf("%d",&a);
        rez(a);

    }
    return 0;
}