Cod sursa(job #3263803)

Utilizator andr3wDhavelcu andrei andr3wDha Data 16 decembrie 2024 15:48:42
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

int main()
{
    int t,n;
    fin>>t;
    for(int i=1;i<=t;i++){
        fin>>n;
        int nrdiv=1;///produs de termeni
        long long sdiv=1;///produs de termeni
        for(int d=2;d*d<=n;d++){
            if(n%d==0){///d=dvizor prim
                int p=0;///puterea divizorului
                long long x=1;
                while(n%d==0){
                    p++;
                    x=x*d;
                    n=n/d;
                }
                nrdiv=nrdiv*(p+1);
                x=x*d; ///x=d la puterea (p+1)
                sdiv=sdiv*(x-1)/(d-1);
        }
    }
        if(n>1){
            nrdiv=nrdiv*2;
            sdiv=sdiv*(n*n-1)/(n-1);
        }
        fout<<nrdiv<<" "<<sdiv<<'\n';
    }
    return 0;
}