Pagini recente » Cod sursa (job #1712133) | Cod sursa (job #889295) | Cod sursa (job #2733175) | Cod sursa (job #1590041) | Cod sursa (job #572587)
Cod sursa(job #572587)
#include <fstream>
#define Nmax 1000003
#define LL long long
#define Mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool p[Nmax];
int P[80000];
int T;
inline void ciur(){
int i,j;
for(j=2*2; j<Nmax; j+=2 )
p[j]=1;
P[P[0]=1]=2;
for(i=3; i<Nmax; i+=2 )
if( !p[i] ){
P[++P[0]]=i;
if( 1LL*i*i < Nmax )
for(j=i*i; j<Nmax; j+=i )
p[j]=1;
}
}
inline int put(int a,int b){
int i,p=a,rez=1;
for(i=0;(1<<i)<=b;++i){
if( b & (1<<i) ) rez=(rez*p)%Mod;
p=(p*p)%Mod;
}
return rez;
}
inline void solve(LL X){
int i;
int nr=1, sum=1,n1,n2,e;
for(i=1; i<=P[0] && 1LL*P[i]*P[i]<=X; ++i){
if( X % P[i] ) continue;
for( e=0; X%P[i]==0; ) e++, X/=P[i];
nr *= (e+1);
n1=(put(P[i],e+1)-1+Mod)%Mod;
n2=put(P[i]-1,Mod-2);
sum=(1LL*sum*n1*n2)%Mod;
}
if( X>1 ){
nr *= 2;
sum=(1LL*sum*(X+1))%Mod;
}
fout<<nr<<" "<<sum<<"\n";
}
int main(){
int i,q; LL X;
ciur();
fin>>T;
for(q=1;q<=T;++q){
fin>>X;
solve(X);
}
fin.close(); fout.close();
return 0;
}