Cod sursa(job #1004487)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 2 octombrie 2013 20:38:32
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long s,x,n,i,nr,pp,nn;
int j,e;
int main()
{
    f>>nn;
    for(j=1;j<=nn;++j)
    {
      f>>n;s=1;nr=1;x=n;pp=1;e=0;
      while(x%2==0) {x/=2;pp*=2;++e;}
      if(pp>1) {nr=e+1;s=pp*2-1;} pp=1;e=0;
      while(x%(n/2)==0) {x=x/(n/2);pp=pp*(n/2);++e;}
      if(pp>1) {nr*=(e+1);s=s*(pp*(n/2)-1)/(n/2-1);}

      for(i=3;i<=n/3;i+=2)
      {
        pp=1;e=0;
        while(x%i==0) {x/=i;pp*=i;++e;}
        if(pp>1) {nr*=(e+1);s=s*(pp*i-1)/(i-1);}
        s=s%9973;
      }
      if(x>1) {s=s*(x*x-1)/(x-1);nr*=2;}
      g<<nr<<" "<<s%9973<<'\n';
    }



    return 0;
}