Pagini recente » Cod sursa (job #931494) | Cod sursa (job #2239340) | Cod sursa (job #1392812) | Cod sursa (job #3268368) | Cod sursa (job #1398634)
#include <fstream>
#include <cmath>
#include <vector>
#define mod 9973
#define NMAX 1000001
#define pb push_back
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool v[NMAX];
vector <int> prime;
int i, n, nrquiz, d, suma, nr, nrd, putere;
void ciur()
{
int i, j;
v[0]=v[1]=1;
for (i=4; i<=NMAX; i+=2)
v[i]=1;
prime.pb(2);
for (i=3; i<=NMAX; i+=2)
if (v[i]==0)
{
prime.pb(i);
for (j=i+i; j<=NMAX; j+=i)
v[j]=1;
}
}
int ridicare(int x, int y)
{
if (y==0) return 1;
return x*ridicare(x,y-1);
}
int main()
{
ciur();
// for (i=0; i<10; ++i) g<<prime[i]<<" ";
f>>nrquiz;
while (nrquiz)
{
nrquiz--;
f>>nr;
int aux=nr;
i=0;
suma=1;
nrd=1;
while (prime[i]<=nr/2)
{
// g<<prime[i]<<" ", i++;
// g<<'\n';
putere=0;
while (aux%prime[i]==0)
{
putere++;
aux/=prime[i];
}
if (putere)
suma*=((ridicare(prime[i],putere+1)-1)/(prime[i]-1))%mod;
nrd*=(putere+1);
i++;
}
if (aux!=1) g<<"2"<<" "<<nr+1<<'\n';
else
g<<nrd<<" "<<suma<<'\n';
i++;
}
return 0;
}