Pagini recente » Cod sursa (job #711395) | Cod sursa (job #91641) | Cod sursa (job #235202) | Cod sursa (job #2381593) | Cod sursa (job #489810)
Cod sursa(job #489810)
#include <fstream>
#include <vector>
#include <math.h>
#define NMAX 1000000
#define rest 9973
using namespace std;
bool C[NMAX+30];
vector<int> Prim;
inline void ciur()
{
memset(C,true,sizeof(C));
Prim.push_back(2);
for(long long i=3;i<=NMAX;i+=2)
{
if(C[i])
{
Prim.push_back(i);
for(long long j=i*i;j<=NMAX;j=j+2*i)
C[j]=false;
}
}
}
inline long long pow(int x,int y)
{
long long ret=1;
for(int i=1;i<=y;i++)
{
ret*=x;
}
return ret;
}
void citire()
{
fstream fin("ssnd.in",ios::in);
fstream fout("ssnd.out",ios::out);
int T;
long long x;
long long nr;
long long s;
int p=0;
fin>>T;
for(int i=1;i<=T;i++)
{
nr=1;s=1;
fin>>x;
for(vector<int>::iterator itr=Prim.begin();1LL*(*itr)*(*itr)<=x;itr++)
{
p=0;
int copie=*itr;
while(x%(*itr)==0)
{
p++;
x/=(*itr);
}
nr=nr*(p+1);
s= (s*( ( ( pow((copie),p+1) -1)/ (copie-1) )%rest))%rest;
}
if(x>1)
{
nr=nr*2;
s=(s*(x+1))%rest;
}
fout<<nr<<" "<<s<<"\n";
}
fin.close();
fout.close();
}
int main(int argc, char* argv[])
{
ciur();
// for(vector<int>::iterator itr=Prim.begin();itr!=Prim.end();itr++)
// fout<<*itr<<endl;
citire();
}