Cod sursa(job #1396138)

Utilizator witselWitsel Andrei witsel Data 22 martie 2015 09:55:18
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#define mod 9973
using namespace std;
long long n;
int t;
long long putere(long long i,int p)
{
    if(p<0) return putere(i,(-p));
    if(p==0) return 1;
    if(p==1) return i;
    if(p%2==0) return putere((i*i)%mod,p/2)%mod;
    if(p%2) return putere(i%mod*((i*i)%mod),(p-1)/2)%mod;
}
int main()
{
    ifstream fin("ssnd.in");
    ofstream fout("ssnd.out");
    fin>>t;
    while(t--)
    {
        int nr=1;
        long long s=1;
        fin>>n;
        long long m=n;
        for(long long i=2;i<=n/2;++i)
            if(m%i==0)
        {
            //cout<<n<<" "<<i<<" ";
            int p=0;
            while(m%i==0)
            {
                m/=i;
                p++;
            }
            nr=(nr*(p+1))%mod;

            s=(s*((putere(i,p+1)-1)/(i-1)))%mod;
        }
        if(nr==1)
            fout<<2<<" "<<n+1<<" \n";
        else fout<<nr<<" "<<s<<" \n";
    }
    return 0;
}