Cod sursa(job #1986999)

Utilizator ANdreeADiana27Alexa Andreea ANdreeADiana27 Data 29 mai 2017 16:53:22
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;

ifstream f("ssnd.in");
ofstream g("ssnd.out");

int vp[78500];
long long x,nr,s;

void Nr_Sum_Div()
{
    int r,p,i=1;
    long long put;
    nr=1;
    s=1;
    r=sqrt(x);
    while(vp[i]<=r)
    {
        p=0;
        while(x%vp[i]==0)
        {
            p++;
            x/=vp[i];
        }
        if(p)
        {
            nr*=p+1;
            put=floor(pow(vp[i],p+1));
            s*=(put-1)/(vp[i]-1);
            r=sqrt(x);
        }
        i++;
    }
    if(x!=1)
    {
        nr*=2;
        s*=x+1;
    }
}

void Ciur()
{
    int n=0;
    int i,j;
    bool c[1000000];
    for(i=2;i<=1000000;i++)
        if(!c[i])
        {
            vp[++n]=i;
            for(j=2*i;j<=1000000;j+=i)
                c[j]=1;
        }
}

int main()
{
    int i,t;
    Ciur();
    f>>t;
    for(i=1;i<=t;i++)
    {
        f>>x;
        Nr_Sum_Div();
        g<<nr<<" "<<s%9973<<endl;
    }
    f.close();
    g.close();

    return 0;
}