Cod sursa(job #1566153)

Utilizator 2chainzTauheed Epps 2chainz Data 11 ianuarie 2016 20:21:29
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MOD = 9973;
int pw(int b,int e){
    int p=1;
    for(int k=0;(1<<k)<=e;k++){
        if((1<<k)&e) p=(1LL*p*b)%MOD;
        b=(1LL*b*b)%MOD;
    }
    return p;
}
int main(){
    int t,x,num,sum;
    in>>t;
    while(t--){
        in>>x;
        num=1,sum=1;
        for(int i=2;i*i<=x;i++){
            if(x%i==0){
                int e=0;
                while(x%i==0) e++,x/=i;
                num*=(e+1);
                sum=(1LL*((1LL*sum*(pw(i,e+1)-1))%MOD)*pw(i-1,MOD-2))%MOD;
            }
        }
        if(x>1) num*=2,sum=(1LL*((1LL*sum*(pw(x,2)-1))%MOD)*pw(x-1,MOD-2))%MOD;
        out<<num<<' '<<sum<<'\n';
    }
    return 0;
}