Pagini recente » Cod sursa (job #1301256) | Cod sursa (job #2556066) | Cod sursa (job #256224) | Cod sursa (job #2055208) | Cod sursa (job #2337839)
#include<bitset>
#include<fstream>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
#define mod 9973
#define m 1000005
bitset <m> bitsett;
int v[m],k=1;
void ciur(){
v[1]=2;
for(int i=3; i<m; i+=2)
if(bitsett[i]==0){
v[++k]=i;
for(int j=i+i; j<m; j+=2*i)
bitsett[j]=1;
}
}
int pow(int a, int b){
int produs=1;
a%=mod;
for(;b; b>>=1){
if(b&1)
produs=(a*produs)%mod;
a=(a*a)%mod;
}
return produs;
}
int main()
{
ciur();
long long suma=1, nr=1,n;
int t, put=0,ok;
cin>>t;
while(t){
ok=1;
cin>>n;
if(n<m && n%2==1 && n!=1)
if(bitsett[n]==0){
cout<<2<<' '<<n+1;
ok=0;
}
if(ok){
for(int i=1; i<=k && 1ll*v[i]*v[i]<=n; i++){
if(n%v[i]) continue;
while(n%v[i]==0){
n/=v[i];
put++;
}
int p1 = (pow(v[i], put+1) - 1) % mod;
int p2 = pow(v[i]-1, mod-2) % mod;
suma=(((suma*p1)%mod)*p2)%mod;
nr*=put+1;
put=0;
}
if(n>1){
nr*=2;
suma=(suma*(n+1))%mod;
}
cout<<nr<<' '<<suma<<'\n';
nr=1;
suma=1;
}
t--;
}
return 0;
}