Pagini recente » Cod sursa (job #2074016) | Cod sursa (job #206098) | Cod sursa (job #3269852) | Cod sursa (job #2883600) | Cod sursa (job #495143)
Cod sursa(job #495143)
#include <fstream>
using namespace std;
const char InFile[]="ssnd.in";
const char OutFile[]="ssnd.out";
const int MaxN=1000100;
const int MOD=9973;
ifstream fin(InFile);
ofstream fout(OutFile);
int nrd,t;
long long n,sum;
char pciur[MaxN];
int nrp[MaxN];
inline void ciur()
{
for(register int i=2;i<MaxN;++i)
{
if(pciur[i]==0)
{
nrp[++nrp[0]]=i;
for(register int j=i<<1;j<=MaxN;j+=i)
{
pciur[j]=1;
}
}
}
}
int main()
{
ciur();
fin>>t;
for(register int i=0;i<t;++i)
{
fin>>n;
nrd=1;
sum=1;
for(register int j=1;(long long)(nrp[j])*(long long)(nrp[j])<=n;++j)
{
int p=1;
long long k=nrp[j];
while(n%nrp[j]==0)
{
++p;
k*=nrp[j];
n/=nrp[j];
}
nrd*=p;
sum*=(k-1)/((long long)nrp[j]-1);
sum%=MOD;
}
if(n>1)
{
nrd<<=1;
n%=MOD;
sum*=(n*n-1)/(n-1);
sum%=MOD;
}
fout<<nrd<<" "<<sum<<"\n";
}
fout.close();
fin.close();
return 0;
}