Pagini recente » Istoria paginii runda/concurs_2_ore/clasament | Rating Tiut Cristian (tiutcristian) | Cod sursa (job #882516) | Cod sursa (job #912641) | Cod sursa (job #3002022)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const long long NMAX = 1e12;
int n;
bool ci[2000005];
vector<int> primes;
void ciur()
{
if(n>1)
primes.push_back(2);
for(int i=3;i<=1000000;i = i + 2)
{
if(ci[i] == false)
{
for(int j=i*2;j<=1000000;j = j + i)
{
ci[j] = true;
}
primes.push_back(i);
}
}
}
int ridput(int baza,int putere)
{
int aux = 1;
while(putere)
{
if(putere%2 == 0)
{
baza = baza * baza;
putere /= 2;
}
else if(putere%2 == 1)
{
putere--;
aux = aux * baza;
}
}
return aux;
}
void descfact(int x)
{
int suma = 1,cardinal = 1;
for(int i=0;i<primes.size();i++)
{
int cnt = 0;
while(x%primes[i] == 0)
{
cnt++;
x = x / primes[i];
}
cardinal = cardinal * (cnt+1);
suma = (suma * ((ridput(primes[i],(cnt+1))-1)/(primes[i]-1)))%9973;
}
g<<cardinal<<" "<<suma<<"\n";
}
int main()
{
f>>n;
ciur();
while(n--)
{
int x;
f>>x;
descfact(x);
}
}