Pagini recente » Cod sursa (job #3182839) | Cod sursa (job #128290) | Cod sursa (job #683920) | Cod sursa (job #2528855) | Cod sursa (job #1500114)
#include <fstream>
using namespace std;
unsigned long long pow(unsigned long long n, unsigned long long p){
unsigned long long x=1;
while(p){
if(p&1){
x*=n;
p--;
}
n*=n;
p>>=1;
}
return x;
}
unsigned long divizor(unsigned long long n, unsigned long div){
unsigned long q=0;
while(n%div==0){
n/=div;
q++;
}
return q;
}
bool c[1000001];
int main(){
c[0]=c[1]=1;
for(unsigned long i=2;i<=1000000;i+=2)
c[i]=1;
for(unsigned long i=3;i<=1000001;i+=2)
if(!c[i])
for(unsigned long j=3;i*j<=1000001;j+=2)
c[i*j]=1;
unsigned t; unsigned long long n;
ifstream f("ssnd.in");
f>>t;
ofstream g("ssnd.out");
while(t--){
f>>n;
if(n<=1000001)
if(!c[n])
g<<2<<' '<<(n+1)%9973<<'\n';
else{
unsigned long long q,Q=1,suma=1;
if(n%2==0){
q=divizor(n,2);
Q*=q+1;
suma*=pow(2,q+1)-1;
}
for(unsigned long div=3;div*div<=n&&n>1;div+=2){
if(!c[div]&&n%div==0){
q=divizor(n,div);
Q*=q+1;
suma*=(pow(div,q+1)-1)/(div-1);
}
}
g<<Q<<' '<<suma%9973<<'\n';
}
}
f.close();
g.close();
return 0;
}