Cod sursa(job #1854329)

Utilizator cosminmaneaCosmin Manea cosminmanea Data 22 ianuarie 2017 16:37:09
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <cstdio>
using namespace std;

int t;
long long x;

int prim(int n)
{
    int i;
    for(i=2;i*i<=n;i++)
        if(n%i==0) return 0;
    return 1;
}

int main()
{
    FILE *f=fopen("ssnd.in","r");
    FILE *g=fopen("ssnd.out","w");
    fscanf(f,"%d",&t);
    int i;
    for(i=1;i<=t;i++)
    {
        fscanf(f,"%d",&x);
        if(x==1)
            fprintf(g,"1 1\n");
        else if(prim(x)==1)
            fprintf(g,"2 %d\n",x+1);
        else
        {
            int d,p,s=1,nr=1;
            for(d=2;x>1;d++)
            {
                p=0;
                int y=1;
                while(x%d==0)
                {
                    x=x/d;
                    y=y*d;
                    p++;
                }
                nr=nr*(p+1);
                y=y*d;
                s=s*((y-1)/(d-1));
            }
            fprintf(g,"%d %d\n",nr,s);
        }
    }
    return 0;
}