Pagini recente » Cod sursa (job #417705) | Cod sursa (job #3276054) | Cod sursa (job #1880094) | Cod sursa (job #103942) | Cod sursa (job #1527884)
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int serie(long int i, long int v)
{
long long int S = 1;
while(v != 1)
{
S = S + pow(i,(v-1));
v--;
}
return S % 9973;
}
void div (long int n, long int &nrdiv, long long int &S)
{
long int i, j, multiplicitate, v[1000006], aux = n;
v[1] = 0;
nrdiv = 1;
for ( i = 2 ; i <= sqrt(n) ; i++ )
v[i] = i;
for ( i = 2 ; i <= sqrt(n) ; i++ )
{
if (v[i] == i)
{
for( j = i + i ; j <= sqrt(n) ; j = j + i )
v[j] = 0;
}
if (v[i] != 0)
{
multiplicitate = 0;
while(aux % v[i] == 0)
{
multiplicitate = multiplicitate + 1;
aux = aux / v[i];
}
v[i] = multiplicitate + 1;
}
}
S = 1;
if(aux != 1)
{
nrdiv = 2;
S = (S + aux) % 9973;
}
for(i = 2 ; i <= sqrt(n) ; i++)
if(v[i] != 0)
{
nrdiv = nrdiv * v[i];
S = (S * serie(i,v[i])) % 9973;
}
if (nrdiv == 1)
nrdiv = 2;
}
long int v[1000006];
int main()
{
long int n, i, x, rezultat;
long long int S;
f>>n;
for( i = 1 ; i <= n ; i++)
{f>>x;
div(x, rezultat, S);
g<<rezultat<<" "<<S<<endl;
}
return 0;
}