Cod sursa(job #2859398)

Utilizator razvan.chChelariu Razvan Dumitru razvan.ch Data 1 martie 2022 11:53:13
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include<bits/stdc++.h>
#define ll long long
#define nmax 1000005
#define mod 9973

using namespace std;
FILE *in = fopen("ssnd.in","r");
FILE *out = fopen("ssnd.out","w");

int n,s,ans,aff;
vector<int>a(nmax);
bool ciur[nmax];

bool nrprim(int n)
{
    if(n==2)
        return true;
    else if(n%2==0)
        return false;
    for(int d=3; d*d<=n; d+=2)
    {
        if(n%d==0)
        {
            return true;
            break;
        }
    }
}
void sol(int n)
{
    if(n==1)
        ans=1,s=1;
    if(nrprim(n)==true)
    {
        ans=2;
        s=(1LL*(n+1))%mod;

        fprintf(out,"%d %d\n",ans,s);
    }
    else
    {
        ans=0,s=0;
        for(int i=1; i*i<=n; i++)
        {
            if(n%i==0)
            {
                ++ans;
                s=(1LL*(s+i))%mod;
                if(i*i<=n)
                {
                    ans++;
                    s=s+(n/i);
                }
            }
        }
        fprintf(out,"%d %d\n",ans,s);
    }

}

int main()
{
    fscanf(in,"%d",&n);
    for(int i=0; i<n; i++)
    {
        fscanf(in,"%d ",&a[i]);
    }
    for(int i=0; i<n; i++)
    {
        sol(a[i]);
    }




}