Pagini recente » Cod sursa (job #1994632) | Diferente pentru problema/sumtree intre reviziile 26 si 27 | Cod sursa (job #3346734) | Cod sursa (job #138073) | Cod sursa (job #3302964)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD=9973;
int t;
long long n;
bool ciur[1000001];
int prim[1000001];
int k=0;
void CalculCiur()
{
ciur[0]=1;
ciur[1]=1;
for(long long i=2;i*i<=1000000;i++)
{
if(ciur[i]==0)
{
prim[++k]=i;
for(long long j=i*i;j<=1000000;j+=i)
ciur[j]=1;
}
}
}
int main()
{
CalculCiur();
fin>>t;
for(int i=1;i<=t;i++)
{
long long sumaDiv=1;
long long nrDiv=1;
fin>>n;
for(int f=1;1LL*prim[f]*prim[f]<=n&&f<=k;f++)
{
if(n%prim[f]==0)
{
int e=0;
long long prod=1;
while(n%prim[f]==0)
{
e++;
n/=prim[f];
prod*=prim[f];
}
prod*=prim[f];
nrDiv*=(e+1);
sumaDiv=(sumaDiv*((prod-1)/(prim[f]-1)))%MOD;
}
}
if(n>1)
{
nrDiv*=2;
sumaDiv=(sumaDiv*(n+1))%MOD;
}
fout<<nrDiv<<" "<<sumaDiv<<'\n';
}
return 0;
}