Pagini recente » Cod sursa (job #563967) | Cod sursa (job #1992712)
#include <fstream>
#define sumMod(x,y) x+y<MOD?x+y:x+y-MOD
#define prodMod(x,y) 1LL*x*y%MOD;
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const int MOD = 9973;
long long k;
int prime[78510],viz[1000004];
void ciur()
{
prime[++k]=2;
int i;
for( i=3; i<1000; i+=2)
if(viz[i]==0)
{
prime[++k]=i;
for(int j=i*i; j<=1000000; j+=2*i)
viz[j]=1;
}
for(;i<=1000000;i+=2)
if(viz[i]==0)
prime[++k]=i;
}
void nr_divi()
{
long long n;
int nr=1,sum=1;
f>>n;
for(int i=1; i<=k && 1LL*prime[i]*prime[i]<=n; i++)
if(n%prime[i]==0)
{
int b=prime[i]%MOD;
int p=1, putere=1,aux=1;
while(n%b==0)
{n/=b; p++;
putere=prodMod(putere,b);
aux=sumMod(aux,putere);
}
nr=prodMod(nr,p);
sum=prodMod(sum,aux);
}
if(n>=2)
{
n++;
nr=prodMod(nr,2);
sum=prodMod(sum,n);
}
g<<nr<<' '<<sum<<'\n';
}
int main()
{
ciur();
int t;
f>>t;
while(t)
nr_divi(),t--;
return 0;
}