Pagini recente » Istoria paginii runda/runda4_procesoare_binare_cu_lacat/clasament | Cod sursa (job #1415726) | Cod sursa (job #878675) | Cod sursa (job #108560) | Cod sursa (job #734093)
Cod sursa(job #734093)
using namespace std;
#include<fstream>
#define MAX 1000005
#define MAX2 78600
#define MOD 9973
bool ciur[MAX];
int prim[MAX2],k=1;
void ciur_er()
{
int i,j;
prim[k]=2;
for(i=3;i<MAX-1;i+=2)
if(!ciur[i])
{
prim[++k]=i;
for(j=i+i+i;j<MAX-1;j+=i+i)
ciur[j]=1;
}
}
int main()
{
ifstream in ("ssnd.in");
ofstream out ("ssnd.out");
int T,c,nrd,i,S,P;
long long n,m;
ciur_er();
in>>T;
while(T--)
{
in>>n;
nrd=1;
S=1;
for(i=1;(1LL*prim[i]*prim[i]<=n)&&(i<=k);i++)
{
if(n%prim[i])
continue;
m=n;
c=1;
while(n%prim[i]==0)
{
n=n/prim[i];
c++;
}
nrd*=c;
P=(((m/n)*(1LL*prim[i])-1)/(1LL*prim[i]-1))%MOD;
S=(S*P)%MOD;
//S=S*P;
}
if(n!=1)
{
nrd*=2;
S=(1LL*S*(n+1))%MOD;
//S=S*(n+1);
}
out<<nrd<<" "<<S<<"\n"; // numar divizori, suma divizori
}
return 0;
}