Pagini recente » Cod sursa (job #2932346) | Cod sursa (job #392717) | Cod sursa (job #1899424) | Cod sursa (job #1562816) | Cod sursa (job #1184941)
#include <fstream>
#include <bitset>
#define NMax 1000001
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t, l, prime[NMax], numpr, k, sumd, nrd;
long long num;
bitset<10000010> ciur;
inline void erast()
{
ciur[1]=1;
for (int i=2; i<=1000001; i++)
if (ciur[i]==0)
for (int j=2; j*i<=1000001; j++)
ciur[j*i]=1;
}
inline long long powd(long long base, int powr)
{
long long res=1;
while (powr!=0) {
if (powr%2==1)
res*=base;
base*=base;
powr=powr/2;
}
return res;
}
int main()
{
erast();
for (int i=1; i<=1000001; i++)
if(ciur[i]==0)
prime[++k]=i;
f>>t;
for (l=1; l<=t; l++)
{
f>>num;
nrd=1;
sumd=1;
for (int i=1; 1LL*prime[i]*prime[i]<=num; i++) {
int powr=0;
while (num%prime[i]==0) {
powr++;
num/=prime[i];
}
nrd=(nrd*(1+powr))%MOD;
sumd=(sumd*(powd(prime[i], powr+1)-1)/(prime[i]-1))%MOD;
}
if (num!=1) {
nrd=(nrd*2)%MOD;
sumd=(sumd*(powd(num, 2)-1)/(num-1))%MOD;
}
g<<nrd<<" "<<sumd<<"\n";
}
return 0;
}