Pagini recente » Cod sursa (job #2588712) | Cod sursa (job #1767644) | Borderou de evaluare (job #1569656) | Cod sursa (job #1942665) | Cod sursa (job #996322)
Cod sursa(job #996322)
#include <cstdio>
#define MOD 9973
#define SIZE 1000001
using namespace std;
int t, k, exp, i, nr_div;
long long prime[SIZE], sum_div, nr;
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)
{
long long result=1;
while(exp)
{
if( exp & 1 )
result *= base;
base *= base;
exp >>= 1;
}
return result;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
erathostenes();
while( t-- )
{
scanf("%lld", &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 = ( sum_div * ( power(prime[i], exp+1) -1 ) / (prime[i] -1) ) % MOD;
}
if( nr>1 )
{
nr_div <<= 1;
sum_div = ( sum_div * (nr+1) ) % MOD;
}
printf("%d %lld\n", nr_div, sum_div);
}
return 0;
}