Cod sursa(job #1204953)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 4 iulie 2014 14:58:35
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>
#include<cmath>
#include<algorithm>
#include<bitset>
using namespace std;

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

const int modulo=9973;
const int MAD=1000000;

int t,nr,primes[MAD];
long long n,sum;
bitset<MAD+5>viz;

inline void Ciur()
{
    int i;
    long long j;
    primes[++primes[0]]=2;
    for (i=3;i<=MAD;i+=2)
        if (!viz[i])
            {
                primes[++primes[0]]=i;
                for (j=1LL*i*i;j<=MAD;j+=i) viz[j]=1;
            }
}

inline void SOLVE(long long x)
{
    int i,aux;
    if (x==1) {sum=1;nr=1;}
    else
        {
            sum=1+x;
            nr=2;
            aux=sqrt(x);
            for (i=1;primes[i]<=aux;i++)
                if (x%primes[i]==0) {sum+=primes[i];sum+=x/primes[i];nr+=2;}
        }
    sum%=modulo;
    fout<<nr<<" "<<sum<<"\n";
}

int main()
{
    fin>>t;
    Ciur();
    while (t--)
        {
            fin>>n;
            SOLVE(n);
        }
    return 0;
}