Cod sursa(job #2466482)
| Utilizator | Data | 2 octombrie 2019 12:51:35 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
unsigned long long x,S1,S2,St,r,i;
int Q,j;
int main()
{
for(f>>Q;Q>0;--Q)
{
f>>x;S1=S2=1;
for(i=2;i*i<=x;++i)if(x%i==0)
{
x/=i;j=1;
while(x%i==0){++j;x/=i;}
S1*=(j+1)%9973;
St=0;r=1;
while(j>=0)
{St=(St+r)%9973;r=(r*i)%9973;--j;}
S2=(S2*St)%9973;
}
if(x>1){S1*=2;S2=(S2*(x+1))%9973;}
g<<S1<<' '<<S2<<'\n';
}
}
