Pagini recente » Cod sursa (job #2761915) | Cod sursa (job #230165) | Cod sursa (job #790259) | Istoria paginii runda/bkt/clasament | Cod sursa (job #1819652)
#include <iostream>
#include <fstream>
#include <cmath>
#define BIG 100000
using namespace std;
int neprim[100001],prim[50001];
int k;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void ciur()
{
long long int i,j;
for(i=2;i<=BIG;i++)
if(!neprim[i]){prim[++k] = i; if(i<=1000) {for(j=i*i;j<=BIG;j+=i) neprim[j] = 1;}}
}
long long power(long long n, long long p)
{
if(p==0) return 1;
else if(p==1) return n;
else if(p==2) return n*n;
else if(p%2==0) return power(power(n,p/2),2);
else return n * power(power(n,p/2),2);
}
int main()
{
long long int N,suma,nr,d;
int cont,i,t;
f >> t;
ciur();
for(cont=1;cont<=t;cont++)
{
suma = 1; nr=1;
f >> N;
for(i=1;i<=k;i++) {if(N%prim[i] == 0){d=0;while(N%prim[i]==0){d++; N/=prim[i];}nr*=d+1; suma*=(power(prim[i],d+1)-1)/(prim[i]-1); if(suma>=9973) suma%=9973;} }
g << nr << " " << suma << endl ;
}
g.close();
return 0;
}