Cod sursa(job #1821538)

Utilizator victorfloreaFlorea Victor Cristian victorflorea Data 3 decembrie 2016 12:05:27
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;

ifstream in("ssnd.in");
ofstream out("ssnd.out");

#define MAX 1000005

int prim[MAX/3] , k;
bool erathostene[MAX];

void era()
{
    for(int i=2;i<MAX-1;i++)
    {
        if(erathostene[i]) continue;

        for(int j=2*i;j<MAX;j+=i)
        {
            erathostene[j]=true;
        }

        prim[k++]=i;
    }
}

void afisare()
{   int n,d=2;
    in>>n;
    int s=n+1 , x=sqrt(n);
    for(int i=0;i<k;i++)
    {
        if(prim[k]>x) break;
        if(n%prim[i]==0)
        {
            int tmp=n/prim[i];
            s=(s+prim[i])%9973;
            d++;
            if(prim[i]!=tmp){
                    s=(s+tmp)%9973;
                    d++;
            }

        }

    }
    out<<d<<' '<<s<<endl;
}

int main()
{   int t;
    in>>t;
    for(int i=1;i<=t;i++)
        afisare();
    in.close();
    out.close();
    return 0;
}