Pagini recente » Cod sursa (job #3001265) | Borderou de evaluare (job #157040) | Cod sursa (job #2191405) | Borderou de evaluare (job #2655249) | Cod sursa (job #2163144)
#include <iostream>
#include <fstream>
#include <bitset>
#define inf 1000008
#define m 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bitset <inf> ciur;
int nrp[inf],k,n,x;
long long lqput(int x,int n){
if(n==0)return 1;
else{
long long sol,val;
sol=1;
val=x;
for(int i=0; (1<<i)<=n; ++i){
if(((1<<i) & n) >0)
sol=(sol*val)%m;
val=(val*val)%m;
}
return sol;
}
}
void leciur(){
ciur[0]=1;
ciur[1]=1;
for(int i=2; i<inf; ++i){
if(ciur[i]==0){
nrp[++k]=i;
int val=inf/i;
for(int j=2; j<= val; ++j)
ciur[j*i]=1;
}
}
}
void solve(int a){
int nrd=1;
int sum=1;
for(int i=1; i<=k && nrp[i]*nrp[i]<=a; ++i){
if(a%nrp[i]==0){
int p=0;
while(a%nrp[i]==0){
++p;
a=a/nrp[i];
}
nrd=nrd*(p+1);
int putere1=(lqput(nrp[i],p+1)-1)%m;
int putere2=lqput(nrp[i]-1,m-2)%m;
sum=(((sum * putere1)%m)*putere2)%m;
}
}
if(a>1){
nrd=nrd*2;
sum=(sum*1LL*(a+1)%m);
}
g<<nrd<<' '<<sum<<'\n';
}
int main(){
f>>n;
leciur();
for(int i=1; i<=n; ++i){
f>>x;
solve(x);
}
return 0;
}