Cod sursa(job #1943550)

Utilizator Y0da1NUME JMECHER Y0da1 Data 28 martie 2017 17:47:33
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <iostream>
#include <fstream>
#include <bitset>
#include <math.h>

using namespace std;
bitset <1000010> ciur;
unsigned int prime[1000000];
int k = 0;
void ciurf ()
{
    int i, j;
    ciur [1] = 1;
    for(i=2;i<=1000010;++i)
        if(ciur[i]==0)
        {
            prime[k]=i;
            ++k;
            for(j=i+i;j<=1000010;j+=i)
                ciur[j]=1;
        }
}
int main()
{
    ifstream in ("ssnd.in");
    ofstream out ("ssnd.out");

    int t;
    long long int n, nr, sum=0, partsum, partprod;

    int i, putere;
    ciurf();
    in>>t;
    for(;t>0;--t)
    {
        in>>n;
        nr = 1;
        sum=1;
        for(i=0;prime[i]<=n && i<k;++i)
            {

                if(n%prime[i])
                    continue;
                putere = 0;
                partsum = 1LL; partprod = 1LL;
                while(n%prime[i]==0)
                {
                    ++putere;
                    partprod*=prime[i];
                    partsum +=partprod;
                    n/=prime[i];
                }
                sum *= partsum;
                sum %= 9973;

                nr *=(1+putere);
            }
        //testam daca e un nr prim f mare
        if(n>1)
        {
            nr*=2;
            sum=(sum * n+1) % 9973;
        }
        out<<nr<<" "<<sum<<"\n";
    }

}