Pagini recente » Cod sursa (job #115614) | Cod sursa (job #2185893) | Cod sursa (job #132091) | Cod sursa (job #31289) | Cod sursa (job #2132950)
#include <fstream>
#include <algorithm>
#include <vector>
#define Nmax 1000000
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
unsigned long long n,i,j,nr;
bool ciur[1000100];
vector <int> v;
void prim()
{
v.push_back(2);
for(unsigned long long i=3; i<=Nmax; i=i+2)
if(ciur[i]==0)
{
v.push_back(i);
for(unsigned long long j=i*3 ; j<=Nmax; j = j + (i << 1))
ciur[j]=1;
}
}
void rezolvare()
{
unsigned long long x2,c,suma,ok,nr_actual,nr_div,x,calc;
for(int i=1; i<=n; i++)
{
f>>x;
x2=x;
ok=0;
suma=1;
nr_div=1;
while(x2!=1 && x/2>=v[ok])
{
c=v[ok];
calc=1;
nr_actual=0;
while(x2%c==0)
{
x2=x2/c;
nr_actual++;
calc= calc * c;
}
if(calc!=1)
{
calc=(calc*c)%9973;
nr_div=nr_div*(nr_actual+1);
suma=(suma * ( (calc-1)%9973 / (c - 1)%9973 ) %9973);
}
ok++;
}
if(suma==1 && x!=1)
{
suma=(x+1)%9973;
nr_div=2;
}
g<<nr_div<<' '<<suma<<'\n';
}
}
int main()
{
f>>n;
prim();
rezolvare();
return 0;
}