Pagini recente » Cod sursa (job #2685027) | Cod sursa (job #1302649) | Cod sursa (job #2149672) | Cod sursa (job #1284175) | Cod sursa (job #2336110)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
const int supp=1e6+5;
const int mod=9973;
const int Maxx=1e6+1;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bitset <supp> prim;
int nr[Maxx];
int tot;
int test;
void ciur(){
prim[0]=1;
prim[1]=1;
for (int i=2,j;i<supp;++i){
if (!prim[i]){
nr[++tot]=i;
for (j=i+i;j<supp;j+=i) prim[j]=1;
}
}
}
inline int pow(int a,int b){
a%=mod;
int ret=1;
for (;b;b>>=1){
if (b & 1){
ret*=a;
ret%=mod;
}
a*=a;
a%=mod;
}
return ret;
}
int i,exp;
long long a;
int sum=1,nrd=1;
int main() {
fin>>test;
ciur();
int s1,s2;
for(;test;--test){
fin>>a;
sum=nrd=1;
for (i=1;i<=tot && 1LL*nr[i]*nr[i]<=a;++i){
if (a%nr[i]==0){
exp=0;
while (a%nr[i]==0){
a/=nr[i];
++exp;
}
nrd*=(exp+1);
s1=(pow(nr[i],exp+1)-1)%mod;
s2=pow(nr[i]-1,mod-2)%mod;
sum=(((sum*s1)%mod)*s2)%mod;
}
}
if (a>1){
nrd*=2;
sum=(1LL*sum*(a+1));
}
fout<<nrd<<" "<<sum%mod<<"\n";
}
return 0;
}