Cod sursa(job #952646)

Utilizator primulDarie Sergiu primul Data 23 mai 2013 19:15:46
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream fi("ssnd.in");
ofstream fo("ssnd.out");
#define NMAX 1000001
#define MOD 9973
 
long long s,n,i,j,x,v[NMAX/2],nr,p,b;
bool a[NMAX];
 
void ciur(){
    v[1]=2;
    for (i=3; i<NMAX; i+=2)
        if (!a[i])
            for (j=i*i; j<NMAX; j+=i) a[j]=1;
    nr=1;
    for (i=3; i<NMAX; i+=2)
        if (!a[i])
            v[++nr]=i;
     
}
 
int main(){
     
    ciur();
     
    fi >> n;
    while (n--){
        fi >> x;
        s=nr=1;
        for (i=1; v[i]*v[i]<=x; i++)
            if (!(x % v[i])){
                p=1;
                b=v[i];
                while (!(x % v[i])) p++,b*=v[i],x/=v[i];
                nr*=p;
                s*=((b-1)/(v[i]-1)) % MOD;
            }
        if (x!=1) nr*=2,s*=((x*x-1)/(x-1))% MOD;
        fo << nr << ' ' << s % MOD << endl;
    }
     
    return 0;
}