Pagini recente » Cod sursa (job #2693991) | Cod sursa (job #2476814) | Cod sursa (job #376679) | Cod sursa (job #1256960) | Cod sursa (job #1174469)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int N=1000000;
bitset <N> v;
int p[79500];
const int mod=9973;
inline int putere(int a,int p)
{
int result=1;
while(p)
{
if(p&1) result=(1LL*result*a)%mod;
a=(1LL*a*a)%mod;
p>>=1;
}
return result;
}
inline void ciur()
{
int i,j;
p[++p[0]]=2;
for(i=3;i*i<=N;i+=2)
{ if(!v[i])
for(j=i*i;j<=N;j+=i) v[j]=1;
}
for(i=3;i<N;i+=2) if(!v[i]) p[++p[0]]=i;
}
int main()
{ freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int n,t,i,j,q,nr,a,b;
int sum;
ciur();
fin>>t;
for(i=0;i<t;i++)
{
sum=1;
nr=1;
fin>>n;
int x=n;
for(j=1;1LL*p[j]*p[j]<=x&&j<=p[0];j++)
{ q=0;
a=1;
while(n%p[j]==0) {q++;n/=p[j];}
if(q>0)
{
nr*=(q+1);
a=(putere(p[j],q+1)-1)%mod;
b=putere(p[j]-1,mod-2)%mod;
sum=(((sum * a) % mod) * b) % mod;
}
}
if(n>1) { nr *= 2;
sum = (1LL*sum*(n+1) % mod);}
fout<<nr<<" "<<sum<<"\n";
}
}