Cod sursa(job #2113928)

Utilizator Cristian.BBurghelea Cristian Cristian.B Data 25 ianuarie 2018 11:41:43
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;

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

typedef long long ll;

ll put(int a,int b)
{
    if(b==0)return 1;
    if(b==1)return a;
    ll aux=put(a,b/2);
    if(b&1)return aux*aux*a;
    return aux*aux;
}

ll t,d,p,ndiv,sdiv,n;
int main()
{
    fin>>t;
    while(t--)
        {fin>>n;
         d=2;ndiv=1;sdiv=1;
         while(n>1){p=0;
                    while(n%d==0){n/=d;++p;}
                    if(p>0){ndiv*=p+1;
                            sdiv*=(put(d,p+1)-1)/(d-1);
                           }
                    ++d;
                    if(d*d>n)d=n;
                   }

         fout<<ndiv<<' '<<sdiv<<'\n';

        }



    fin.close(); fout.close();
    return 0;
}