Pagini recente » Cod sursa (job #2039381) | Cod sursa (job #1128083) | Cod sursa (job #2172932) | Cod sursa (job #152158) | Cod sursa (job #996302)
Cod sursa(job #996302)
#include <cstdio>
#define MOD 9973
#define SIZE 1000001
using namespace std;
int t, nr, k, exp, i, nr_div;
long long prime[500001], sum_div;
bool c[SIZE];
inline void erathostenes()
{
for(int i=2; i<=SIZE; ++i)
if(!c[i])
{
prime[++k]=i;
for(int j=2*i; j<=SIZE; j+=i)
c[j]=1;
}
}
long long power(long long base, long long exp)
{
if(exp == 0)
return 1;
else if(exp == 1)
return base % MOD;
else if( exp & 1 )
return ( (base % MOD) * power((base%MOD)*(base%MOD) % MOD, (exp-1)/2 ) ) % MOD;
else
return power((base%MOD)*(base%MOD) % MOD, exp/2) % MOD;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
erathostenes();
while( t-- )
{
scanf("%d", &nr);
sum_div=nr_div=1;
for(i=1; prime[i] * prime[i]<=nr && i<=k; ++i)
if( !(nr % prime[i]) )
{
exp=0;
while( !(nr % prime[i]) )
{
++exp;
nr/=prime[i];
}
nr_div *= (exp+1);
sum_div *= ( power(prime[i], exp+1) -1 ) / (prime[i] -1) % MOD;
}
if( nr>1 )
{
nr_div *= 2;
sum_div *= (( nr * nr -1 ) / (nr-1) ) % MOD;
}
printf("%d %lld\n", nr_div, sum_div);
}
return 0;
}