Cod sursa(job #2117957)

Utilizator HumikoPostu Alexandru Humiko Data 29 ianuarie 2018 20:14:14
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#define MOD 9973

using namespace std;

ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");

bool f[1000000];
int ciur[1000000], cate;

void ciurE()
{
    f[1] = 1;
    for ( int i = 1; i <= 1000; ++i )
        if ( !f[i] )
            for (int j = i*2; j <= 1000000; j += i )
                f[j]=1;
    for ( int i = 1; i <= 1000000; ++i )
        if ( !f[i] )
            ciur[cate++] = i;

}

int main()
{
    ciurE();
    int t;
    fin>>t;
    for ( int i = 1; i <= t; ++i )
    {
        long long n, suma = 1;
        fin>>n;
        int div = 1;
        for ( int j = 0; j < cate && n > 1; ++j )
        {
            int k = 0;
            long long putere = ciur[j];
            while ( n%ciur[j] == 0 )
            {
                ++k;
                n /= ciur[j];
                putere *= ciur[j];
            }
            div *= (k+1);
            suma = suma*(putere-1)/(ciur[j]-1)%MOD;
        }
        if ( n == 1 )
            fout<<div<<" "<<suma<<"\n";
        else
            fout<<2<<" "<<(n+1)%MOD<<"\n";
    }
}