Pagini recente » Cod sursa (job #1162155) | Cod sursa (job #1964059) | Cod sursa (job #1878496) | Cod sursa (job #58864) | Cod sursa (job #489448)
Cod sursa(job #489448)
#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;
int x;
int nr;
int s;
int p=0;
int copie;
fin>>T;
for(int i=1;i<=T;i++)
{
nr=1;s=1;
fin>>x;
copie=x;
for(vector<int>::iterator itr=Prim.begin();(*itr)*(*itr)<=copie;itr++)
{
p=0;
while(x%(*itr)==0)
{
p++;
x/=(*itr);
}
nr=nr*(p+1);
s=(s*(int(((pow((long double)(*itr),p+1)-1)/(*itr-1)))%rest))%rest;
}
if(copie==x)
{
nr=2;
s=1+x;
}
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();
}