Cod sursa(job #2367602)

Utilizator mariastStoichitescu Maria mariast Data 5 martie 2019 11:38:25
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
int t,viz[1000110],nr[1000100];
long long n,numar,sum,q,k,p,val;
int main()
{
    for(int d=2;d<=1000100;++d){
        if(!viz[d]){
            nr[++k]=d;
            for(int j=2;d*j<=1000100;++j)viz[d*j]=1;
        }
    }
    f>>t;
    for(int i=1;i<=t;++i){
        f>>n;
        numar=1;
        sum=1;
        q=1;
        while(n>1&&q<=k){
            p=1;
            val=nr[q];
            while(n%nr[q]==0){
                ++p;
                n/=nr[q];
                val=val*nr[q];
            }
            if(p!=1){
                numar=numar*p;
                sum=sum*((val-1)/(nr[q]-1));
            }
            ++q;
        }
        if(n!=1){
            sum=(sum*(n+1));
            numar=2*numar;
        }
        g<<numar%9973<<" "<<sum%9973<<'\n';
    }

}