Pagini recente » Cod sursa (job #782509) | Cod sursa (job #1542273) | Cod sursa (job #1773642) | Cod sursa (job #987140) | Cod sursa (job #658112)
Cod sursa(job #658112)
#include <fstream>
#include <cstring>
#define MOD 9973
#define radMAX 1000000
#define pL 62502
#define dvzL 78499
using namespace std;
ifstream in;
ofstream out;
char p[pL];
int dvz[dvzL];
int main()
{
int sum,nr,N;
long long x;
memset(p,0,sizeof(p));
for(int i=1;((i*i)<<2)+(i<<2)+1<=radMAX;++i)
if((p[i>>3]&(1<<(i&7)))==0)
for(int j=((i*i)<<1)+(i<<1);(j<<1)+1<=radMAX;j+=(i<<1)+1)
p[j>>3]|=(1<<(j&7));
memset(dvz,0,sizeof(dvz));
dvz[0]=1;
dvz[1]=2;
for(int i=1;(i<<1)+1<=radMAX;++i)
if((p[i>>3]&(1<<(i&7)))==0)
dvz[++dvz[0]]=(i<<1)+1;
in.open("ssnd.in");
in>>N;
out.open("ssnd.out");
for(;N--;)
{
in>>x;
sum=1;
nr=1;
for(int add,pow,cnt,i=1;i<=dvz[0]&&dvz[i]*dvz[i]<=x;++i)
{
pow=1;
add=1;
for(cnt=0;x!=1&&x%dvz[i]==0;x/=dvz[i],++cnt,pow*=dvz[i],pow%=MOD,add+=pow,add%=MOD);
nr*=++cnt;
nr%=MOD;
sum*=add;
sum%=MOD;
}
if(x!=1)
{
++x;
x%=MOD;
nr<<=1;
nr%=MOD;
sum*=x;
sum%=MOD;
}
out<<nr<<' '<<sum<<'\n';
}
in.close();
out.close();
return 0;
}