Cod sursa(job #2911101)
Utilizator | Data | 26 iunie 2022 22:04:12 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 20 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.43 kb |
#include <bits/stdc++.h>
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long n,nc,t,p,e,sd,nrd,x,i,j;
bool v[1000001];
void ciur()
{
v[0]=v[1]=1;
for(i=2; i*i<=1000000; i++)
if(v[i]==0)
{
for(j=i*i; j<=1000000; j+=i)
v[j]=1;
}
}
int main()
{
ciur();
fin>>t;
for(int i=1; i<=t; i++)
{
fin>>n;
sd=nrd=1;
for(p=1; p*p<=n; p++)
{
if(n%p==0)
{
if(v[p]==0)
{
e=0;
x=p;
nc=n;
while(nc%p==0)
{
e++;
x*=p;
nc/=p;
}
nrd*=e+1;
sd*=(x-1)/(p-1)%MOD;
}
if(v[n/p]==0)
{
e=0;
x=n/p;
nc=n;
while(nc%(n/p)==0)
{
e++;
x*=n/p;
nc/=n/p;
}
nrd*=e+1;
sd*=(x-1)/(n/p-1)%MOD;
}
}
}
fout<<nrd<<' '<<sd%MOD<<'\n';
}
return 0;
}