Cod sursa(job #2587446)

Utilizator Katherine456719Swan Katherine Katherine456719 Data 22 martie 2020 18:04:05
Problema Suma si numarul divizorilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>

using namespace std;
bool v[1000001];
int b[1000000];
int main()
{
    ifstream cin("ssnd.in");
    ofstream cout("ssnd.out");
    for(int i=2; i<=1000000; i++)
        if(v[i]!=1)
            for(int j=2*i; j<=1000000; j+=i)
                v[j]=1;
    int k=0;
    for(int i=2; i<=1000000; i++)
        if(v[i]!=1)
            b[++k]=i;
    int t;
    cin>>t;
    for(int i=1; i<=t; i++)
    {
        int n;
        cin>>n;
        int div=1,l=0;
        long long sum =1,s=1;
        for(int i=1; 1LL*b[i]*b[i]<=n and i<=k; i++)
        {
            l=0;
            s=1;
            if(n%b[i]==0)
            {
                while(n%b[i]==0)
                {
                    l++;
                    n=n/b[i];
                    s=s*b[i];
                }
                s*=b[i];
                s-=1;
                s/=(b[i]-1);
                sum*=s;
                div*=(l+1);
            }
        }
        if(n>1)
        {
            div*=2;
            sum*=(n+1);
        }
        cout<<div%9973<<" "<<sum%9973<<"\n";
    }
    return 0;
}