Pagini recente » Istoria paginii runda/oji_simulare_2017_cl10/clasament | Cod sursa (job #2037882) | Cod sursa (job #1128006) | Cod sursa (job #2176546) | Cod sursa (job #1620089)
#include <fstream>
#include <cmath>
using namespace std;
int n, d, s, fr[10000003], v[100000], i, j, k, nrdiv, t, x, nr, a, b, p, rest, im, numitor;
int main()
{
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
for(i=2;i<=1000000;i++){
if(fr[i]==0){
for(j=i+i;j<=1000000;j+=i){
fr[j]=1;
}
v[++k]=i;
}
}
nrdiv=1;
fin>>t;
for(i=1;i<=t;i++){
fin>>n;
x=n;
t=1;
nrdiv=1;
s=1;
im=1;
while(v[t]<=sqrt(n)){
nr=0;
while(x%v[t]==0){
nr++;
x /= v[t];
}
nrdiv *= (nr+1);
if(nr!=0){
a=v[t];
b=nr+1;
p=1;
while(b!=0){
if(b%2==1)
p *= a%9973;
a *= a%9973;
b /= 2;
}
p %= 9973;
if(p>=1)
rest=p-1;
else
rest=9972;
b=9971;
numitor=v[t]-1;
while(b!=0){
if(b%2==1)
im=im*numitor%9973;
numitor=numitor*numitor%9973;
b=b/2;
}
s*=(rest*im)%9973;
}
t++;
}
if(x!=1){
nrdiv*=2;
s *= (x+1);
}
fout<<nrdiv<<" "<<s<<"\n";
}
return 0;
}