Pagini recente » Cod sursa (job #326668) | Cod sursa (job #1021001) | Cod sursa (job #3225096) | Cod sursa (job #2257463) | Cod sursa (job #1901252)
#include <cstdio>
#include <bitset>
#define LMAX 1000000
#define PRIMES 80000
#define MOD 9973
using namespace std;
bitset <LMAX+5> ciur;
long long P[PRIMES+5],k;
void GenPrimes(){
int i,d;
for(i=4;i<=LMAX;i+=2)
ciur[i]=1;
for(d=3;d*d<=LMAX;d+=2)
if(!ciur[d])
for(i=d*d;i<=LMAX;i+=2*d)
ciur[i]=1;
P[k=1]=2;
for(i=3;i<=LMAX;i+=2)
if(!ciur[i])
P[++k]=i;
}
int main(){
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
long long n,i,j,e,S,no;
long long x;
GenPrimes();
scanf("%lld",&n);
for(i=1;i<=n;++i){
S=1;no=1;
scanf("%lld",&x);
for(j=1;j<=k&&(long long)P[j]*P[j]<=x;++j){
e=0;
while(x%P[j]==0){
x/=P[j];
e++;
}
if(e){
e++;
no*=e;
no%=MOD;
long long Pow=1;
for(int c=1;c<=e;++c)
Pow*=(long long)P[j];
Pow=(Pow-1)/(P[j]-1);
Pow%=MOD;
S*=Pow;
S%=MOD;
}
}
if(x>1){
no*=2;
S*=(x+1);
no%=MOD;
S%=MOD;
}
printf("%lld %lld\n",no,S);
}
fclose(stdin),fclose(stdout);
return 0;
}