Cod sursa(job #2428973)

Utilizator kywyPApescu tiGEriu kywy Data 7 iunie 2019 00:56:28
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include<cstdio>
#include<cmath>
#define N 1000007
#define MOD 9973
using namespace std;

FILE* in=fopen("ssnd.in", "r");
FILE* out=fopen("ssnd.out", "w");
bool c[N];
int nrp[80007];

int ct;
void ciur()
{
    for(int i=2; i<=N; ++i)
    {
        if(!c[i])
        {
            nrp[++ct]=i;
            if(1LL*i*i<=N)
                for(int j=i*i; j<=N; j+=i)
                    c[j]=1;
        }
    }
}

int main()
{
    int n;
    fscanf(in, "%d", &n);
    ciur();
    printf("%d", ct);
    for(int i=1; i<=n; ++i)
    {
        int r1=1, r2=1;
        long long x;
        ct=0;
        fscanf(in, "%lld", &x);
        while(x>1)
        {
            int exp=0;
            ++ct;
            while(x%nrp[ct]==0)
            {
                x/=nrp[ct];
                ++exp;
            }
            r1=r1*(exp+1);
            long long a=1;
            for(int j=1; j<=exp+1; ++j)
            {
                a*=nrp[ct];
            }
            if(exp>0)
            {
                a=a-1;
                a=a/(nrp[ct]-1);
                a%=MOD;
                r2*=a;
                r2%=MOD;
            }
        }
        fprintf(out, "%d %d\n", r1, r2);
    }
}