Pagini recente » Cod sursa (job #1781320) | Cod sursa (job #2885604) | Cod sursa (job #2001332) | Cod sursa (job #3146006) | Cod sursa (job #990567)
Cod sursa(job #990567)
#include <cstdio>
using namespace std;
int fact[3000],exp[3000];
inline int LgPut(int n, int p)
{
int put=1;
while(p>0)
{
if(p&1)
{
put=(put*n);
p--;
}
n=(n*n);
p=p>>1;
}
return put;
}
int main()
{
int i,len,t,n,k,d,sol1,sol2,a;
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
scanf("%d", &t);
while(t)
{
t--;
scanf("%d", &n);
len=0;k=0;
while(n%2==0)
{
n/=2;
k++;
}
if(k)
{
len++;
fact[len]=2;
exp[len]=k;
}
d=3;
while(n>1)
{
k=0;
while(n%d==0)
{
k++;
n/=d;
}
if(k)
{
len++;
fact[len]=d;
exp[len]=k;
}
d+=2;
}
sol1=1;sol2=1;
for(i=1;i<=len;i++)
{
sol1=sol1*(exp[i]+1);
a=LgPut(fact[i],exp[i]+1);
a--;
a=a/(fact[i]-1);
sol2=(sol2*a)%9973;
}
printf("%d %d\n", sol1,sol2);
}
return 0;
}