Pagini recente » Cod sursa (job #211479) | Cod sursa (job #665704) | Cod sursa (job #354382) | Cod sursa (job #3004613) | Cod sursa (job #870202)
Cod sursa(job #870202)
#include<fstream>
struct abc
{
int f,exp;
};
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int t,l,p,pr,e,i,nr,ok[1000001],a[100000];
long long sum,x,j;
abc power[100];
void ciur()
{
i=3;
while (i<=1000)
{
if (!ok[i])
for (j=(long long)i*i;j<=1000000;j+=i)
ok[j]=1;
i+=2;
}
a[++nr]=2;
for (i=3;i<=1000000;i+=2)
if (!ok[i]) a[++nr]=i;
}
int main()
{
ciur();
in>>t;
for (i=1;i<=t;i++)
{
in>>x;
p=0;
for (j=1;j<=nr;j++)
if (x%a[j]==0)
{
e=0;
while (x%a[j]==0)
{
x/=a[j];
e++;
}
p++;
power[p].f=a[j];
power[p].exp=e;
if (x==1) break;
}
if (x!=1)
{
p++;
power[p].f=x;
power[p].exp=1;
}
pr=1;
sum=1;
for (j=1;j<=p;j++)
{
pr=pr*(power[j].exp+1);
l=1;
for (e=1;e<=power[j].exp+1;e++)
l=l*power[j].f;
sum=((long long)sum*(l-1)/(power[j].f-1))%9973;
}
out<<pr<<' '<<sum<<'\n';
}
}