Cod sursa(job #3363738)

Utilizator Bichinet_VictorBichinet Victor Bichinet_Victor Data 21 august 2026 20:48:25
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.34 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");

const int MAX=1000000;
const int MOD=9973;
vector <int> prime;
bool ciur[MAX+1];

void ciurul()
{
    fill(ciur+2,ciur+MAX+1,1);
    for(int i=2; i*i<=MAX; i++){
        if(ciur[i]){
            for(int j=i*i; j<=MAX; j+=i){
                ciur[j]=0;
            }
        }
    }
    for(int i=2; i<=MAX; i++){
        if(ciur[i]){
            prime.push_back(i);
        }
    }
}

int main()
{
    ciurul();
    int t;
    cin >> t;
    while(t--){
        long long n;
        cin >> n;
        long long nr=1;
        long long sum=1;
        for(int p : prime){
            if(1LL*p*p>n){
                break;
            }
            if(n%p==0){
                int cnt=0;
                long long ex=1;
                long long s=1;
                int mod=p%MOD;
                while(n%p==0){
                    cnt++;
                    n/=p;
                    ex=(ex*mod)%MOD;
                    s=(s+ex)%MOD;
                }
                nr*=(cnt+1);
                sum=(sum*s)%MOD;
            }
        }
        if(n>1){
            nr*=2;
            long long s=(1+(n%MOD))%MOD;
            sum=(sum*s)%MOD;
        }
        cout << nr << " " << sum << '\n';
    }
}