Pagini recente » Cod sursa (job #3194923) | Cod sursa (job #2890520) | Cod sursa (job #3126276) | Cod sursa (job #782515) | Cod sursa (job #1385813)
#include <fstream>
#include <vector>
#include <cmath>
#define MX 1000001
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t, p[MX];
long long n;
vector<int> f;
void Prime()
{
int d,j;
for(d=2; d<=MX/2; d++)
{
if(!p[d])
{
f.push_back(d);
for(j=2*d; j<=MX; j+=d)
{
p[j] = 1;
}
}
}
}
inline long long putere(int b, int a)
{
int rez=1;
while(b)
{
if(b%2)
{
rez *= a;
}
b /= 2;
a *= a;
}
return rez;
}
int main()
{
Prime();
int i,act=0;
long long suma, divizori;
vector<int>::iterator it;
fin>>t;
for(i=1; i<=t; i++)
{
fin>>n;
it = f.begin();
suma = divizori = 1;
while(n > 1)
{
act = 0;
while(n%(*it) == 0)
{
n /= (*it);
act++;
}
divizori *= (act+1);
//fout<<act+1<<' '<<*it<<' '<<putere(act+1, *it)<<'\n';
suma = ( suma * ( putere(act+1, *it) - 1) / (*it - 1) ) % MOD;
//fout<<suma<<' ';
it++;
}
fout<<divizori<<' '<<suma<<'\n';
}
f.clear();
fin.close(); fout.close();
return 0;
}