Cod sursa(job #2103600)

Utilizator AndaionicaIonica Anda Maria Andaionica Data 10 ianuarie 2018 15:31:07
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int i,j,nr,prim[1000001],q[1000001],s,t,p;
long long n,x;
int main()
{
    for(i=2;i<=1000000;i++)
        if(prim[i]==0){
            nr++;
            q[nr]=i;
            for(j=2*i;j<=1000000;j+=j)
                prim[j]=0;
        }
    f>>t;
    while(t){
        f>>n;
        nr=1;
        s=1;
        for(i=1;q[i]*q[i]<=n;i++)
            if(n%q[i]==0){
                p=0;
                while(n%q[i]==0){
                    p++;
                    n/=q[i];
                }
                nr*=(p+1);
                x=1;
                for(j=0;j<=p;j++)
                    x*=q[i];
                s=(s*(x-1)/(q[i]-1))%9973;
            }
        if(n!=1){
            nr*=2;
            s=(s*(n+1))%9973;
        }
        g<<nr<<" "<<s<<'\n';
        t--;
    }
    return 0;
}