Pagini recente » Cod sursa (job #1869492) | Clasament cnrvxa1 | Cod sursa (job #1561523) | Cod sursa (job #2379497) | Cod sursa (job #2494962)
#include <bits/stdc++.h>
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t,n,i,j,nr,nr1,nr2,k,sol,p[300010],cnt;
pair<int,int> x[1010];
bitset<1000010> f;
int putere(int a,int b) {
if (b==0)
return 1;
if (b==1)
return a%mod;
else {
int crt=putere(a,b/2)%mod;
crt=crt*crt%mod;
if (b&1)
return (a%mod*crt%mod)%mod;
else
return crt%mod;
}
}
int main() {
fin>>t;
for (i=2;i<=1000000;i++) {
if (f[i]==0)
p[++cnt]=i;
for (j=2*i;j<=1000000;j+=i)
f[j]=1;
}
while (t--) {
fin>>n;
for (i=1;i<=1000;i++)
x[i]={0,0};
k=0;
for (i=1;i<=cnt&&p[i]<=n/p[i]&&n!=1;i++) {
if (n%p[i]==0) {
x[++k].first=p[i];
while (n%p[i]==0) {
n/=p[i];
x[k].second++;
}
}
}
sol=1;
nr=nr1=nr2=1;
if (n!=1)
x[++k].first=n, x[k].second=1;
for (i=1;i<=k;i++) {
sol*=(x[i].second+1);
nr1=putere(x[i].first,x[i].second+1)-1;
if (nr1<0)
nr1+=mod;
nr1%=mod;
nr2=x[i].first-1;
nr2=putere(nr2,mod-2);
nr2%=mod;
nr*=(nr1%mod*nr2%mod);
}
fout<<sol<<" "<<nr<<"\n";
}
return 0;
}