Pagini recente » Cod sursa (job #3167891) | Cod sursa (job #2914153) | Cod sursa (job #1100743) | Cod sursa (job #2785849) | Cod sursa (job #1379710)
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int64_t n, t, S=1, N, prim[100001],m=1, nr=1;;
bool a[1000001];
void ciur()
{ prim[1]=2;
for(int i=3;i*i<=1000000;i++)
for(int j=i*i;j<=1000000;j=j+2*i)
a[j]=true;
for(int i=3;i<=1000000;i+=2)
if(!a[i]) m++,prim[m]=i;
}
int64_t lgput(int d, int c)
{
if (c==1) return d;
else
if (!(c%2)) return (lgput(d*d,c/2));
else return (d*lgput(d*d,(c-1)/2));
}
int main()
{
f>>t;
ciur();
for(int u=1;u<=t;u++)
{
f>>n;
int w=(int)(n); int p=0; nr=S=1;
while (n>1)
{
while(!(n%prim[w]))
{ p++;
n/=prim[w];
}
if(p) {nr*=(p+1); S=(S%9973*((lgput(prim[w],p+1)-1)/(prim[w]-1))%9973)%9973; p=0;}
else w--;
}
g<<nr<<' '<<S%9973<<'\n';
}
return 0;
}