Pagini recente » Cod sursa (job #2256924) | Cod sursa (job #2891000) | Cod sursa (job #2506021) | Cod sursa (job #2388698) | Cod sursa (job #3301812)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const ll MOD=9973;
const int MAXV=1e6;
char ciur[MAXV+1];
vector <ll> prime;
ll lgpow(ll a,ll b) {
ll p=1;
while(b!=0) {
if(b%2==1) {
p*=a;
}
a*=a;
b/=2;
}
return p;
}
int main() {
int n;
ciur[0]=ciur[1]=1;
for (int i=2; i*i<=MAXV; i++) {
if (ciur[i]==0) {
for (int j=i*i; j<=MAXV; j+=i) {
ciur[j]=1;
}
}
}
for (int i=2; i<=MAXV; i++) {
if (ciur[i]==0) {
prime.push_back(i);
}
}
fin>>n;
for (int i=1; i<=n; i++) {
ll x;
fin>>x;
int ind=0;
ll p=1,s=1;
while (ind<prime.size()&&prime[ind]*prime[ind]<=x) {
int d=prime[ind];
int power=0;
while(x%d==0) {
power++;
x/=d;
}
if(power!=0) {
p*=(power+1);
s*=((lgpow(d,power+1)-1)/(d-1));
s%=MOD;
}
ind++;
}
if (x!=1) {
p*=2;
s*=((lgpow(x,2)-1)/(x-1));
s%=MOD;
}
fout<<p<<' '<<s<<'\n';
}
return 0;
}