Cod sursa(job #3129739)

Utilizator vlvdVlad Hosu vlvd Data 15 mai 2023 18:32:46
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#define mod 9973
using namespace std;
ifstream fin("a.in");
ofstream fout("a.out");
int t;
unsigned long long nr;
void divizorii_unui_numar(unsigned long long x)
{
    unsigned long long s=0, d=1;
    for(; d*d<x; d++)
        if(x%d==0)
            s+=(x/d+d)%mod;
    if(d*d==x)
        s=(s+d)%mod;
    cout<<s;
}
void numarul_de_divizori(unsigned long long n)
{
    unsigned long long p=0,nrd=1;
    while(n%2==0)
        p++, n/=2;
    if(p)
        nrd=nrd*(p+1);
    unsigned long long d=3;
    while(d*d<=n)
    {
        p=0;
        while(n%d==0)
            p++,n/=d;
        if(p)
            nrd=nrd*(p+1);
        d+=2;
    }
    if(n!=1)
        nrd=nrd*2;
    cout<<nrd;
}
int main()
{
    fin>>t;
    for(int i=1;i<=t;i++)
    {
        fin>>nr;
        numarul_de_divizori(nr);
        cout<<" ";
        divizorii_unui_numar(nr);
        cout<<'\n';
    }
}