Cod sursa(job #1380570)

Utilizator avramraresAvram Rares Stefan avramrares Data 8 martie 2015 08:31:33
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool ok[20000];
int n,i,h,p,cn,t,nr,d,v,s,j;
int main()
{
    f>>n;
    d=2;
    ok[2]=true;
    for(i=1; i<=n; i+=2)
        ok[i]=true;
    for(i=3; i*i<=n; i+=2)
        if(ok[i]==true)
            for(j=2*i; j<=n; j+=i)
                ok[j]=false;
    for(i=1; i<=n; i++)
    {
        d=2;
        s=1;
        nr=1;
        f>>t;
        h=2;
        nr=1;
        cn=t;
        while(n!=1 && h*h<=cn && ok[h]==true)
        {
            p=0;
            v=h;
            while(t%h==0)
            {
                t/=h;
                v=v*h;
                p++;
            }
            if(p!=0)
            {
                nr=nr*(p+1);
                s=s*(v-1)/(h-1);
            }
            h++;
        }
        if(t>1)
        {
            nr*=2;
            s=s*(t*t-1)/(t-1)%9973;
            g<<nr<<" "<<s<<'\n';
        }
        else g<<nr<<" "<<s%9973<<'\n';
    }
    return 0;
}