Cod sursa(job #2252645)

Utilizator milincaMarcu Ilinca milinca Data 2 octombrie 2018 21:30:48
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    long long n,i;
    int f,p,nr,nrdiv,sum,t;
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>nr;
        f=2;
        nrdiv=1;
        sum=1;
        while(f*f<=nr){
            p=0;
            t=1;
            while(nr%f==0){
                p++;
                t=t*f;
                nr=nr/f;
            }
            if(p>=1){
                nrdiv=nrdiv*(p+1);
                sum=sum*(t*f-1)/(f-1);
            }
            f++;
        }
        if(nr!=1){
            nrdiv=nrdiv*2;
            sum=sum*(nr*nr-1)/(nr-1);
        }
        if(nrdiv==2)
            sum=nr+1;
        cout<<nrdiv<<" "<<sum<<endl;
    }
    return 0;
}