Mai intai trebuie sa te autentifici.

Cod sursa(job #2366521)

Utilizator CodCatalinCodreanu Catalin CodCatalin Data 4 martie 2019 20:38:28
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
using namespace std;

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

int ciur[1000003],prime[1000003],nr,a,b,card=1,nr1,n,s;
long long c;
int paw(int numar,int putere)
{
    int aux=1;
    while(putere)
    {
        if(putere%2)
        {
            putere--;
            aux=aux*numar;
        }
        else
        {
            putere/=2;
            numar=numar*numar;
        }
    }
    return aux;
}
int main()
{
    f>>n;
    ciur[1]=1;
    for(int i=2;i<=1000000;++i)
        if(!ciur[i])
    {
        nr++;
        prime[nr]=i;
        for(int j=2*i;j<=1000000;j+=i)
        {
            ciur[j]=0;
        }
    }
    for(int i=1;i<=n;++i)
    {
        f>>a;b=1;s=1;card=1;
        while(a>1)
        {
            nr1=0;
            while(a%prime[b]==0&&a>1)
            {
                nr1++;
                a/=prime[b];
            }
            if(nr1)
            {
                card=card*(nr1+1);
                int c=prime[b],p;
                p=paw(c,nr1+1);p--;
                p/=(c-1);
                s*=p;
            }
            b++;
        }
        g<<card<<" "<<s<<'\n';
    }
    return 0;
}