Pagini recente » Cod sursa (job #3180150) | Cod sursa (job #3191186) | Cod sursa (job #2595456) | Cod sursa (job #2948375) | Cod sursa (job #2497346)
#include <fstream>
#include <bitset>
#define R 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long n,t,i,j,exp,prime[100000];
long long x,nrdiv,divizor,putere,sumdiv;
bitset <1000100> b;
int explog(long long a,long long p){
if(p==0)return 1;
if(p==1)return a%R;
long long r=explog(a,p/2);
r=r*r;
if(p%2)return ((r%R)*a)%R;
return r%R;
}
int main(){
for(i=2;i<=1000000;i++)
if(b[i]==0){
prime[++prime[0]]=i;
for(j=i+i;j<=1000000;j+=i)
b[j]=1;
}
for(fin>>t;t--;){
fin>>x;
if(x==1){fout<<"1 1\n";continue;}
nrdiv=sumdiv=1;
for(i=1;i<=prime[0] && prime[i]<=x/prime[i] && x>1;i++){
if(x%prime[i])continue;
divizor=prime[i];
exp=1;
while(x%divizor==0){
exp++;
x/=divizor;
}
nrdiv*=exp;
putere=explog(divizor,exp)-1;
if(putere<0)putere+=R;
sumdiv*=(putere*explog(divizor+R-1,R-2))%R;
sumdiv%=R;
}
if(x>1){
x%=R;
nrdiv*=2;
sumdiv=(sumdiv*(x+1))%R;
}
fout<<nrdiv<<" "<<sumdiv<<"\n";
}
return 0;
}