Pagini recente » Cod sursa (job #2556281) | Cod sursa (job #2496716) | Cod sursa (job #913355) | Cod sursa (job #1266994) | Cod sursa (job #874517)
Cod sursa(job #874517)
#include<fstream>
#include<bitset>
#define mod 9973
#define lim 1000003
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bitset<lim>ok;
long long n,x,i,j;
long long prim[lim];
long long putere(long long n,long long p){
long long r=1;
while(p!=0){
if(p%2)
r=(n*r)%mod;
n=(n*n)%mod;
p/=2;
}
return r;
}
void ciur(){
prim[-1]=1;
prim[1]=2;
for(i=3;i<=lim;i+=2){
if(!ok[i]){
prim[++prim[-1]]=i;
for(j=i+i;j<=lim;j+=i)
ok[j]=1;
ok[i]=1;
}
}
}
void sumNRdiv(long long x){
long long exp,a1,a2,nrdiv,suma;
suma=1;
nrdiv=1;
for(long long i=1;i<=prim[-1],prim[i]*prim[i]<=x;i++){
if(x%prim[i]==0){
exp=0;
while(x%prim[i]==0){
exp++;
x/=prim[i];
}
nrdiv*=exp+1;
exp=exp*B;
a1=(putere(prim[i],exp+1)-1)%mod;
a2=putere(prim[i]-1,mod-2)%mod;
suma=(((suma*a1)%mod)*a2)%mod;
}
}
if(x!=1){
nrdiv*=2;
suma=(suma*(x+1))%mod;
}
g<<suma<<" "<<"\n";
}
int main (){
f>>n;
ciur();
for(;n;n--){
f>>x;
sumNRdiv(x);
}
return 0;
}