Pagini recente » Cod sursa (job #1578113) | Cod sursa (job #426959) | Cod sursa (job #285207) | Cod sursa (job #3242542) | Cod sursa (job #1969024)
#include<fstream>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
long long lgput(int a,int b){
long long put=1;
a%=9973;
while(b>0){
if(b%2==1){
b--;
put=(a*put)%9973;
}
else b=b/2,a=(a*a)%9973;
}
return put;
}
long long i,j,vec[90000],k,n,x,p;
long long nrd,sd,p1,p2;
bool v[1000011];
int main()
{
for(i=2;i<1000001;++i) {
if(v[i]==0){
vec[++k]=i;
for(j=i+i;j<1000001;j+=i) {
v[j] = 1;
}
}
}
f>>n;
for(i=1;i<=n;i++){
f>>x;
nrd=1;
sd=1;
j=1;
while(j<=k&&vec[j]*vec[j]<=x){
if(x%vec[j]==0){
p=0;
while(x%vec[j]==0){
x/=vec[j];
p++;
}
nrd*=(p+1);
p1=(lgput(vec[j],p+1)-1)%9973;
p2=lgput(vec[j]-1,9971)%9973;
sd=(((sd*p1)%9973)*p2)%9973;
}
j++;
}
if(x>1){
nrd=nrd*2;
sd=(sd*(x+1)%9973);
}
g<<nrd<<" "<<sd<<'\n';
}
}