Pagini recente » Cod sursa (job #1463383) | Cod sursa (job #1882117) | Cod sursa (job #3192869) | Cod sursa (job #706652) | Cod sursa (job #2632428)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
bitset <1100005> ciur;
int nrprime[79000];
inline void eratostene()
{
ciur[0]=ciur[1]=1;
for (int i=2; i*i<=1000000; i++)
{
if (ciur[i]==0)
{
for (int j=i*i; j<=1000000; j+=i)
ciur[j]=1;
}
}
int cnt=0;
for (int i=1; i<=1000000; i++)
{
if (ciur[i]==0)
{
nrprime[++cnt]=i;
//cout<<i<<endl;
}
}
}
#define short long long
short suma=1, nrdiv=1;
inline void suma_div (short nr)
{
short d=1, exp=0;
suma=1;
short nrog=nr;
nrdiv=1;
while (nr>1)
{
short p=1;
exp=0;
while (nr%nrprime[d]==0)
{
exp++;
p*=nrprime[d];
nr/=nrprime[d];
}
if (exp>0)
{
p*=nrprime[d];
nrdiv*=(exp+1);
short prod=(p-1)/(nrprime[d]-1);
suma*=prod;
}
d++;
}
//suma-=nrog;
}
int main()
{
int n;
fin>>n;
eratostene();
for (int i=1; i<=n; i++)
{
short nr;
fin>>nr;
suma_div(nr);
fout<<nrdiv<<" "<<suma%9973<<endl;
}
return 0;
}