Cod sursa(job #484004)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 11 septembrie 2010 14:27:18
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <bitset>
using namespace std;
const int L=1000500,mod=9973;
bitset <L> m;
int p[100000];
int main()
{ifstream in("ssnd.in");
ofstream w("ssnd.out");
int T,i,j,k,q,r1;
long long x,r2,s,t;
p[1]=2;
q=1;
for(i=3;i<L;i+=2)
  if(!m[i])
   {p[++q]=i;
   for(j=3*i;j<L;j+=i<<1)
     m[j]=1;}
in>>T;
while (T--)
   {in>>x;
   j=r1=r2=1;
   while((long long)p[j]*p[j]<=x)
      {s=t=1;
      k=0;
      while(x%p[j]==0)
         {x/=p[j];
         k++;
         s=(s*p[j])%mod;
         t=(t+s)%mod;}
      r1*=k+1; r2=(r2*t)%mod;
      j++;}
    if(x>1)
     {r1<<=1;
     r2=(r2*(x+1))%mod;}
    w<<r1<<" "<<r2<<"\n";}
return 0;}