Pagini recente » Cod sursa (job #105342) | Cod sursa (job #2771787) | Cod sursa (job #2027391) | Cod sursa (job #3132203) | Cod sursa (job #489801)
Cod sursa(job #489801)
#include <fstream>
#include <vector>
#include <math.h>
#define NMAX 1000000
#define rest 9973
using namespace std;
fstream fout("ssnd.out",ios::out);
bool C[NMAX+30];
vector<int> Prim;
void ciur()
{
memset(C,true,sizeof(C));
Prim.push_back(2);
for(long long i=2;i<=NMAX;i+=2)
{
C[i]=false;
}
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;
}
}
}
void citire()
{
fstream fin("ssnd.in",ios::in);
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+1;itr++)
{
p=0;
while(x%(*itr)==0)
{
p++;
x/=(*itr);
}
nr=nr*(p+1);
s= s*( ( ( ( long long)pow( (long double)(*itr),p+1) -1)/ (*itr-1) )%rest)%rest;
}
if(x>1)
{
nr=nr*2;
s=s*( ( ( ( long long)pow( (long double)(x),1+1) -1)/ (x-1) )%rest)%rest;
}
fout<<nr<<" "<<s<<"\n";
}
fin.close();
}
int main(int argc, char* argv[])
{
ciur();
// for(vector<int>::iterator itr=Prim.begin();itr!=Prim.end();itr++)
// fout<<*itr<<endl;
citire();
}