Cod sursa(job #1232238)

Utilizator danstefanDamian Dan Stefan danstefan Data 22 septembrie 2014 15:54:02
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#include<cstdio>
using namespace std;
long long p1=1,p2=1,n,i,fa,ca,a,pu,e;
bool ok;
int main()
{
    freopen("ssnd.in","r",stdin);
    ofstream g ("ssnd.out");
    scanf("%lld",&n);
    for(i=1; i<=n; i++)
    {
        scanf("%lld",&a);
        fa=2;
        ca=a;
        ok=false;
        while(ca>=fa*fa&&n!=1)
        {
            e=0;
            pu=1;
            while(a%fa==0)
            {
                a/=fa;
                e++;
                pu=pu*fa;
                ok=true;
            }
            if((fa+1)*(fa+1)>ca&&ok==false)
            {
                p1=p1*2;
                p2=p2*(a*a-1)/(a-1);
            }
            else if(e!=0)
            {
                p1=p1*(e+1);
                p2=p2*(pu*fa-1)/(fa-1);
            }
            fa++;
        }
        if(i<n)g<<p1<<" "<<p2<<'\n';
        else g<<p1<<" "<<p2;
        p1=1;
        p2=1;
    }
    return 0;
}