Pagini recente » Cod sursa (job #2866071) | Cod sursa (job #2723775) | Cod sursa (job #2921668) | Cod sursa (job #1521047) | Cod sursa (job #2174796)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int putere1(int baza,int putere)
{
int P=1;
baza=baza%9973;
while(putere!=0)
{
if(putere%2==1){P=(P*baza)%9973;putere--;}
else {putere=putere/2;baza=(baza*baza)%9973;}
}
return P%9973;
}
long long d,t,i,prod,n,x,N,p,prod1,j,NR_DIV,SUMA_DIV,v[100001];
bool a[1000005];
int main()
{
//g<<(sizeof(a)+sizeof(v))/1024.0<<'\n';
a[1]=1;
a[0]=1;
for(d=2; d<1000005; d++)
if(a[d]==0)
{
t++;
v[t]=d;
for(i=d+d; i<1000005; i=i+d)
a[i]=1;
}
N=t;
f>>n;
for(i=1; i<=n; i++)
{
f>>x;
t=1;
NR_DIV=1;SUMA_DIV=1;
while(v[t]*v[t]<=x&&t<=N)
{
p=0;
prod=1;
while(x%v[t]==0)
{
p++;
x=x/v[t];
}
NR_DIV=NR_DIV*(p+1);
prod=putere1(v[t],p+1)-1;
prod1=putere1(v[t]-1,9971);
SUMA_DIV=SUMA_DIV*(prod*prod1)%9973;
t++;
}
if(x!=1)
{
NR_DIV=NR_DIV*2;
SUMA_DIV=(SUMA_DIV*(x+1))%9973;
}
g<<NR_DIV<<" "<<SUMA_DIV%9973<<'\n';
}
return 0;
}