Pagini recente » Cod sursa (job #441992) | Cod sursa (job #1108316) | Cod sursa (job #1654663) | Cod sursa (job #737345) | Cod sursa (job #1000104)
#include<fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MOD = 9973;
int prim[100000];
void ciur(){
int i,j;
const int MAXL = 1000000;
char k[MAXL+2];
for(i=1;i<=MAXL;i++) k[i]=1;
for(i=2;i<=MAXL;i++){
if(k[i]==1){
prim[++prim[0]]=i;
for(j=i+i;j<=MAXL;j+=i) k[j]=0;
}
}
}
long long power(long long b, long long e)
{
long long res=1;
while(e)
{
if(e&1) res*=b;
b*=b;
e>>=1;
}
return res;
}
void proc(long long P[],long long D[],int L){
long long nr=1,sum=1;
for(int i=1;i<=L;i++){
nr *= (D[i]+1);
sum = ( sum*( power(P[i],D[i]+1)-1) / (P[i]-1) ) %MOD;
}
out<<nr<<' '<<sum<<'\n';
}
int main(){
ciur();
int i,t;
long long n,p[20],d[20];
in>>t;
for(;t;--t){
in>>n;
int l=0;
for(i=1;prim[i]*prim[i]<=n;i++){
if(n%prim[i]==0){
l++;
p[l]=prim[i];
int e=0;
while(n%prim[i]==0){
e++;
n/=prim[i];
}
d[l]=e;
}
}
if(n>1){
l++;
p[l]=n;
d[l]=1;
}
proc(p,d,l);
}
return 0;
}