Pagini recente » Cod sursa (job #2208328) | Cod sursa (job #1289333) | Cod sursa (job #840916) | Cod sursa (job #1257942) | Cod sursa (job #2039151)
#include <iostream>
#include <cstdio>
#define mod 9973
#define N 1000000
using namespace std;
long long int n, nr, s, x, sc;
pair<long long, long long> euclidext(long long a, long long b)
{
if(b==0)
return {1,0};
auto p=euclidext(b, a%b);
return {p.second, p.first-(a/b)*p.second};
}
long long exp(long long a, long long p)
{
if(p==0)
return 1;
if(p%2==0)
return exp((a*a)%mod, p/2);
return (exp(a, p-1)*a)%mod;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d\n", &n);
for(int i=0;i<n;i++)
{
scanf("%d\n", &x);
nr=1;
s=1;
int p=0;
while(x%2==0)
{
x=x/2;
p++;
}
if(p>0)
{
nr=(nr*(p+1))%mod;
sc=exp(2, p+1)-1;
s=(s*sc)%mod;
}
int d=3;
while(x>1)
{
p=0;
while(x%d==0)
{
p++;
x=x/d;
}
if(p>0)
{
nr=(1LL*nr*(p+1))%mod;
pair<long long, long long> rez=euclidext(d-1, mod);
while(rez.first<0)
rez.first+=mod;
sc=(1LL*(exp(d, p+1)-1)*rez.first)%mod;
s=(s*sc)%mod;
}
d+=2;
}
printf("%lld %lld\n", nr, s);
}
return 0;
}