Pagini recente » Cod sursa (job #1260238) | Diferente pentru home intre reviziile 700 si 701 | Cod sursa (job #2113114) | Cod sursa (job #2026049) | Cod sursa (job #2495189)
#include <fstream>
#include <bitset>
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long n,r;
int t,i,j,p[100000],m,sum,nr,cnt,x;
bitset <1000001> f;
int pow(int a, int b){
r=1;
while(b){
if(b%2)
r=(r*a)%mod;
a=(a*a)%mod;
b/=2;
}
return r;
}
int main(){
p[++m]=2;
for(i=3;i<1000000;i+=2){
if(!f[i]){
p[++m]=i;
for(j=3*i;j<=1000000;j+=2*i)
f[j]=1;
}
}
for(fin>>t;t;t--){
fin>>n;
sum=1; nr=1;
for(i=1;p[i]<=n/p[i] && i<=m;i++){
if(n%p[i]==0){
cnt=0;
while(n%p[i]==0){
cnt++;
n/=p[i];
}
nr=(nr*(cnt+1))%mod;
x=pow(p[i],cnt+1)-1;
if(x<0)
x+=mod;
sum=(sum*x)%mod;
//sum=(sum* ( (pow(p[i],cnt+1)-1<0) ? pow(p[i],cnt+1)-1+mod : pow(p[i],cnt+1)-1 ) )%mod;
sum=(sum*pow((p[i]-1+mod)%mod,mod-2))%mod;
}
}
if(n!=1){
nr*=2;
x=pow(n,2)-1;
if(x<0)
x+=mod;
sum=(sum*x)%mod;
//sum=(sum* ( (pow(n,2)-1<0) ? pow(n,2)-1+mod : pow(n,2)-1 ) )%mod;
sum=(sum*pow((n-1+mod)%mod,mod-2))%mod;
}
fout<<nr<<" "<<sum<<"\n";
}
return 0;
}