Cod sursa(job #3223063)

Utilizator DumitrescuADumitrescuA DumitrescuA Data 12 aprilie 2024 11:55:09
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
using namespace std;

ifstream cin("ssnd.in");
ofstream cout("ssnd.out");

#define MOD 9973
#define int long long

int prim[500000],ciur[1000002];

void ciur1(){
    int i,j,nr;
    prim[1]=2;
    for(i=3;i<=1000;i+=2){
        if(ciur[i]==0){
            for(j=i*i;j<=1000001;j+=i)
                ciur[j]=1;
        }
    }
    nr=1;
    for(i=3;i<=1000001;i+=2){
        if(ciur[i]==0){
            nr++;prim[nr]=i;
        }
    }
}

signed main()
{
    ciur1();
    int t,n,sum,nr,e,d,i;
    cin>>t;
    while(t){t--;
        cin>>n;
        sum=nr=1;
        for(i=1;prim[i]*prim[i]<=n;i++){///printf("%d ",prim[i]);
            if(n%prim[i]==0){
                e=1;
                d=prim[i];
                while(!(n%prim[i])){
                    d*=prim[i];
                    n/=prim[i];
                    e++;
                }
                nr*=e;
                sum*=((d-1)/(prim[i]-1))%MOD;
            }
        }
        if(n!=1){
            nr*=2;
            sum*=(n*n-1)/(n-1)%MOD;
        }
        cout<<nr<<" "<<sum%MOD<<"\n";

    }
    return 0;
}