Cod sursa(job #2609810)

Utilizator bindeacristianBindea Cristian bindeacristian Data 3 mai 2020 16:18:58
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <bitset>
using namespace std;

ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

const int MAX_N = 1000005;
const int MOD = 9973;

bitset<MAX_N>ciur;

void Ciur()
{
    int i,j,c=0,N;

    for(i=1; i<MAX_N; i++)
        ciur[i]=1;
    for(i=2; i<MAX_N; i++)
    {
        if(ciur[i]==1)
            for(j=i+i; j<=MAX_N; j=j+i)
                ciur[j]=0;
    }
}
int main()
{
    Ciur();

    long unsigned int n;
    long sumdiv=1, nrdiv=1;
    fin>>n;


    if(ciur[n]==1)
        {
        nrdiv=2; sumdiv=n+1;}
    else
        for(long unsigned int i=2; i<=n;i++)
            if(n%i==0 && ciur[i]==1)
            {
                int P=0;
                while(n%i==0)
                {
                    n=n/i;
                    P++;
                }

                nrdiv=nrdiv*(P+1);
                sumdiv=sumdiv*(pow(i,P+1)-1)/(i-1);
            }


            fout<<nrdiv<<" "<<sumdiv;
    return 0;
}