Pagini recente » Cod sursa (job #2747761) | concurs-mihai-patrascu-2013/clasament | Cod sursa (job #2253119) | Cod sursa (job #1728132) | Cod sursa (job #2381752)
#include <bits/stdc++.h>
#define MAX 1000010
#define MOD 9973
#define ll long long
using namespace std;
bool E[MAX];
int n;
ll ne=1,se=1,l=0,b,c,x,y,V[MAX];
//Suma si numarul divizorilor
ll fast_exp(ll a,ll b){
if(b==1)return a;
ll c=fast_exp(a,b/2);
c*=c;
if(b%2)c*=a;
return c;
}
int main(){
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
for(int i=2;i<=MAX;i++){
if(!E[i]){
V[l++]=i;
for(ll j=i*i;j<=MAX && j>0;j+=i){
E[j]=1;
}
}
}
cin>>n;
for(int i=0;i<n;i++){
cin>>c;
b=c;
int j=0;
for(int j=0;1ll*V[j]*V[j]<=b;j++)
if(b%V[j]==0){
//V[j]
int counter=1;
while(b%V[j]==0){
b/=V[j];
counter++;
}
ll e=fast_exp(V[j],counter)-1;
ne*=counter;
se=(se*e/(V[j]-1))%MOD;
}
if(b>1){
//b
ll e=b*b-1;
se=(se*e/(b-1))%MOD;
ne*=2;
}
j++;
cout<<ne<<' '<<se<<'\n';
ne=se=1;
}
return 0;
}