Pagini recente » Cod sursa (job #805707) | Cod sursa (job #842323) | Cod sursa (job #520242) | Cod sursa (job #2346307) | Cod sursa (job #951485)
Cod sursa(job #951485)
#include <fstream>
#define nmax 1000005
#define mod 9973
//#include <cmath>
using namespace std;
int p,d,i,j,k,v[500000],n,m;
bool prim[nmax];
unsigned long long sum,num,nrd,numa,x;
inline int pow(int x, int p) {
int rez=1;
x%=mod;
for(;p;p>>=1) {
if(p&1) {
rez*=x;
rez%=mod;
}
x*=x;
x%=mod;
}
return rez;
}
int main()
{
ifstream f("ssnd.in");
ofstream g("ssnd.out");
f>>n;
prim[2]=true;
for (i=3;i<=nmax;i++) if (i%2==1) prim[i]=true;
for (i=2;i<=nmax;i++)
if (prim[i]==true)
{ k++;
v[k]=i;
for (j=2*i;j<=nmax;j+=i)
prim[i]=false;
}
for (i=1;i<=n;i++)
{
f>>x;nrd=1;sum=1;m=x;num=1;
for (j=1;j<=m && x>1;j++)
{ d=0;p=1;
while (x%v[j]==0 && x>1) x=x/v[j],d++;
if (d>0)
{
numa=int(pow(v[j],d+1)-1)%mod;
sum=sum*numa;
num=num*(v[j]-1);
nrd=nrd*(d+1);
}
}
if (nrd>1) g<<nrd<<" "<<int(sum/num)<<'\n';
}
f.close();
g.close();
return 0;
}