Cod sursa(job #2529783)

Utilizator betybety bety bety Data 23 ianuarie 2020 22:50:48
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
#define mod 9973
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const long long lim=1000000;
bool v[lim+5];
vector<long long> primes;
void ciur()
{
    primes.push_back(2);
    for(long long i=3;i<=lim;i+=2)
    if(v[i]==0)
    {
        primes.push_back(i);
        for(long long j=2*i;j<=lim;j+=i)
            v[j]=1;
    }
}
int main()
{
    int t;
    long long n;
    ciur();
    cin>>t;
    for(int w=1;w<=t;++w)
    {
        long long nrdiv=1,sum=1;
        cin>>n;
        for(int i=0;i<primes.size() and primes[i]*primes[i]<=n and n>1;++i)
        if(n%primes[i]==0)
        {
            long long exp=0,aux=1,p=1;
            while(n%primes[i]==0)
                ++exp,n/=primes[i],p=(p*primes[i])%mod,aux=(aux+p)%mod;
            nrdiv*=(exp+1);
            sum=(sum*aux)%mod;
        }
        if(n>1)
        {
            nrdiv*=2;
            n%=mod;
            sum=(sum*((1+n)%mod))%mod;
        }
        cout<<nrdiv<<' '<<sum<<'\n';
    }
    return 0;
}