Pagini recente » Cod sursa (job #666567) | Cod sursa (job #1747721) | Cod sursa (job #2792561) | Cod sursa (job #1134731) | Cod sursa (job #606958)
Cod sursa(job #606958)
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t,ti,m=9973;
long long n,i,nmax=1000010,p1,d1,card,suma;
bool ciur[1000010],ci,cj;
int pr[1000010],pri;
int pow (int b, int p) {
int r;long long x;
for (x=b,r=1;p>0;p>>=1) {
if ((p & 1) !=0)
r=r*x;
x=x*x;
}
return r;
}
int main() {
ciur[1]=1;pri=0;
for (ci=2;ci<=nmax;ci++) {
if (ciur[ci]==0) {pri++;pr[pri]=ci;}
for (cj=2*ci;cj<=nmax;cj+=ci) ciur[cj]=1;
}
for (ti=1;ti<=t;ti++) {
f >> n;pri=0;card=1;suma=1;
while (n!=0) {
pri++;p1=pr[pri];d1=0;
while (n%p1==0 && n!=0) {d1++;n/=p1;}
card=card*(d1+1);
suma=suma*((pow(p1,d1)-1)/(p1-1))%m;
}
g << card << ' ' << suma << '\n';
}
f.close();g.close();
return 0;
}