Pagini recente » Cod sursa (job #2064708) | Cod sursa (job #545835) | Cod sursa (job #1415971) | Cod sursa (job #321306) | Cod sursa (job #2246018)
#include <iostream>
#include <fstream>
using namespace std;
struct nrNou
{
int n, p;
};
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int lgPut(int a, int n)
{
if(n == 1) return a;
if(n % 2) return (lgPut(a, n/2) * lgPut(a, n/2) * a);
else return lgPut(a, n/2) * lgPut(a, n/2);
}
void afisareRezultat(nrNou actual[], int actualL)
{
int nrDiv = 1, sumDiv = 1;
for(int i = 1; i <= actualL; i++)
{
nrDiv *= (actual[i].p + 1);
sumDiv *= ((lgPut(actual[i].n, actual[i].p + 1)- 1) / (actual[i].n - 1));
}
g<<nrDiv<<" "<<sumDiv<<'\n';
}
void descompunere(int nr, nrNou actual[], int &actualL)
{
int k = 2, cont = 0;
while(nr > 1)
{
if(nr % k == 0)
{
cont++;
nr = nr / k;
}
else
{
actualL++;
actual[actualL].n = k;
actual[actualL].p = cont;
k++;
cont = 0;
}
}
actualL++;
actual[actualL].n = k;
actual[actualL].p = cont;
afisareRezultat(actual, actualL);
}
int main()
{
int n, nr[101];
nrNou actual[101];
int actualL = 0;
f>>n;
for(int i = 1; i <= n; i++)
{
f>>nr[i];
}
for(int i = 1; i <= n; i++)
{
descompunere(nr[i], actual, actualL);
actualL = 0;
}
return 0;
}