Pagini recente » Cod sursa (job #2686491) | Cod sursa (job #213544) | Cod sursa (job #1187056) | Diferente pentru prezentare intre reviziile 21 si 20 | Cod sursa (job #681306)
Cod sursa(job #681306)
#include <cstdio>
#define file_in "ssnd.in"
#define file_out "ssnd.out"
#define ll long long
#define mod 9973
#define lim 1000100
int Q,d,e,nr;
long long N;
int nrd,sumd;
int viz[lim];
int P[lim];
int put(int x, int p)
{
int rez=1;
x%=mod;
for(;p;p>>=1){
if(p&1)
rez=(rez*x)%mod;
x=(x*x)%mod;
}
return rez;
}
void ciur(){
int i,j;
for (i=2;i<=lim;++i)
if (!viz[i]){
P[++nr]=i;
for (j=i+i;j<=lim;j+=i)
viz[j]=1;
}
}
int main(){
int i;
ciur();
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &Q);
while(Q--){
scanf("%lld", &N);
nrd=sumd=1;
for (i=1;i<=nr && 1LL*P[i]*P[i]<=N;++i){
if (N%P[i])
continue;
e=0;
while(N%P[i]==0){
e++;
N/=P[i];
}
if (e>0){
nrd*=(e+1);
int p1=(put(P[i],e+1)-1)%mod;
int p2=put(P[i]-1,mod-2)%mod;
sumd=(((sumd*p1)%mod)*p2)%mod;
}
}
if (N!=1){
nrd*=2;
sumd=(1LL*sumd*(N+1))%mod;
}
printf("%d %d\n", nrd,sumd);
}
return 0;
}