Pagini recente » Cod sursa (job #2954465) | Cod sursa (job #181560) | Cod sursa (job #562228) | Cod sursa (job #1289723) | Cod sursa (job #609359)
Cod sursa(job #609359)
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n,nmax=1000005;
bool ciur[1000005];
int pr[1000005],pri,ci,cj,k,t,ti,m=9973,i,d1,card,suma,t1,t2;
int pow (int b, int p) {
int r=1,i;
b%=m;
for (i=1;i<=p;i<<=1) {
if (p&i) r=r*b%m;
b=b*b%m;
}
return r;
}
int main() {
ciur[1]=true;pri=0;
for (ci=2;ci<nmax-1;ci++){
if(ciur[ci]==false) {
pr[++k]=ci;
for (cj=ci+ci;cj+1<nmax;cj+=ci)
ciur[cj]=true;
}
}
f >> t;
for (ti=1;ti<=t;ti++) {
f >> n;card=1;suma=1;
for (pri=1;pri<=k&&1LL*pr[pri]*pr[pri]<=n;pri++){
if (n%pr[pri]==0) {
d1=0;
while (n%pr[pri]==0) {d1++;n/=pr[pri];}
card*=(d1+1);
t1=(pow(pr[pri],d1+1)-1)%m;
t2=(pow(pr[pri]-1,m-2))%m;
suma=(((suma*t1)%m)*t2)%m;
}
}
if (n>1) {
card*=2;
suma=1LL*suma*(n+1)%m;
}
g << card << ' ' << suma << '\n';
}
f.close();g.close();
return 0;
}