Cod sursa(job #3215333)

Utilizator YuzukyIstrate Andreea Ruxandra Yuzuky Data 14 martie 2024 20:26:12
Problema Suma si numarul divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MAX = 1000000;
char ciur[MAX+1];
vector<int> v; //vector in care pun nr prime
int main()
{
    int t,n;
    in>>t;
    for(int i=2; i<=MAX; ++i)
    {
        if(ciur[i]==0)
        {
            v.push_back(i);
            for(int d=i*i; d<=MAX; d=d+i)
                ciur[i]=1;
        }
    }

    for(int test=0; test<t; ++test)
    {
        in>>n;
        int nrdiv=1;
        if(n==1)
            out<<1<<" "<<1<<'\n';
        else
        {
            int i=0, nrdiv=1, s=1;
            while(v[i]*v[i]<=n)
            {
                int exp=1, power=v[i];
                while(n%v[i]==0)
                {
                    n/=v[i];
                    ++exp;
                    power=power*v[i];
                }
                nrdiv*=exp;
                s*=(power-1)/(v[i]-1);
                s=s% 9973;
                ++i;
            }
            if(n>1)
            {
               nrdiv*=2;
               s*=(n*n-1)/(n-1);
               s=s%9973;
            }
            out<<nrdiv<<" "<<s%9973<<'\n';
        }
    }
    return 0;
}