Pagini recente » Cod sursa (job #799063) | Cod sursa (job #1960310) | Cod sursa (job #1967186) | Cod sursa (job #317903) | Cod sursa (job #1500127)
#include <fstream>
using namespace std;
bool c[1000000];
bool prim(unsigned long long n){
if(n<=1000000)
if(!c[n])
return 1;
return 0;
}
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;
}
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<=1000000;i+=2)
if(!c[i])
for(unsigned long j=3;i*j<=1000000;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(prim(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&&div<=1000000;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;
}