Cod sursa(job #2089656)

Utilizator roberttrutaTruta Robert roberttruta Data 16 decembrie 2017 21:29:51
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>

using namespace std;
int i,j,t,n,p,u[100000];
long long x,y,nr,d,s,X;
bool v[1000100];
int main()
{
   ifstream f("ssnd.in");
   ofstream g("ssnd.out");

  for(i=2;i*i<=1000000;i=i+1)
    if(v[i]==0)
    for(j=i*i;j<=1000000;j=j+i)
    v[j]=1;
  v[0]=1;v[1]=1;

  for(i=1;i<=1000000;i=i+1)
    if(v[i]==0)
    u[++t]=i;


f>>n;
    for(i=1;i<=n;i=i+1)
    {
        f>>x;s=1;nr=1;X=x;
        for(d=1;u[d]*u[d]<=x;d=d+1)
        {
            if(x%u[d]==0)
            {
                p=0;y=1;
                while(X%u[d]==0)
                {
                    p++;
                    X=X/u[d];
                    y=y*u[d];
                }
                nr=nr*(p+1);
                y=y*u[d];
                y=y-1;
                s=s*y;
                s=s/(u[d]-1);
                s=s%9973;
            }
        }
        if(X!=1)
        {
            nr=nr*2;
            y=X*X;
            y=y-1;
            s=s*y;
            s=s/(X-1);
            s=s%9973;
        }
        g<<nr<<' '<<s<<'\n';
    }



    return 0;
}