Cod sursa(job #2271782)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 29 octombrie 2018 11:01:43
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <cstdio>
#include <cmath>
#define MOD 9973

using namespace std;

long long myPow(int x,int e)
{
    long long p = 1;
    for(int i = 1 ; i <= e ; i++)
        p = 1LL * p * x % MOD;
    return p % MOD;
}

inline void solve(int n,int &nr,int &sum)
{
    int lim = (int)sqrt((double)n);
    int e = 0 , d = 2;
    while(d <= lim)
    {
        e = 0;
        while(n % d == 0)
        {
            n /= d;
            e++;
        }
        if(e > 0)
        {
            nr = 1LL * nr * (e+1) % MOD;
            sum = 1LL * sum * ((myPow(d,e+1)-1)/(d-1)) % MOD;
        }
        d++;
    }
    if(n > 1)
    {
        nr = 2;
        sum = 1+n;
    }
}

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