Cod sursa(job #2466497)

Utilizator EricEric Vilcu Eric Data 2 octombrie 2019 13:18:57
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long x,S1,S2,St,r,i;
int N,a[78500];
bool c[1000001];
int Q,j;
int main()
{
    for(j=2;j<=1000000;++j)if(!c[j]){a[++N]=j;if(j<1000)for(int q=j*j;q<=1000000;q+=j)c[q]=1;}
    for(f>>Q;Q>0;--Q)
    {
        f>>x;S1=S2=1;
        for(i=1;a[i]*a[i]<=x;++i)if(x%a[i]==0)
        {
            x/=a[i];j=1;
            while(x%a[i]==0){++j;x/=a[i];}
            S1*=(j+1)%9973;
            St=0;r=1;
            while(j>=0)
            {St=(St+r)%9973;r=(r*a[i])%9973;--j;}
            S2=(S2*St)%9973;
        }
        if(x>1){S1*=2;S2=(S2*(x+1))%9973;}
        g<<S1<<' '<<S2<<'\n';
    }
}