Pagini recente » Cod sursa (job #3130625) | Cod sursa (job #1839063) | Cod sursa (job #112864) | Cod sursa (job #2004262) | Cod sursa (job #606974)
Cod sursa(job #606974)
#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,t1,t2;
bool ciur[1000010];
int pr[1000010],pri,ci,cj;
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]=true;pri=0;
for (ci=2;ci<=nmax;ci++) {
if (ciur[ci]==false) {pri++;pr[pri]=ci;}
for (cj=2*ci;cj<=nmax;cj+=ci) ciur[cj]=true;
}
f >> t;int k=pri;
for (ti=1;ti<=t;ti++) {
f >> n;pri=0;card=1;suma=1;p1=0;
while (n!=0&&n!=1&&pri<=k) {
pri++;p1=pr[pri];d1=0;
while (n%p1==0 && n!=0 && n!=1) {d1++;n/=p1;}
card=card*(d1+1);
t1=(pow(p1,d1+1)-1);
t2=(p1-1);
suma=suma*(t1/t2)%m;
}
g << card << ' ' << suma << '\n';
}
f.close();g.close();
return 0;
}