Cod sursa(job #1016156)

Utilizator jul123Iulia Duta jul123 Data 25 octombrie 2013 20:49:37
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    ifstream f("ssnd.in");
    ofstream g("ssnd.out");
     bool ciur[1000001];
     int n, i, x, r, p, j, k, v[80000], t, y, e ;
    for(i=2; i<=1000000; i++)
             ciur[i]=true;
    r=1000;
    for(p=2; p<=r; p++){
             if(ciur[p]==1)
             for(j=p*p; j<=1000000; j+=p)
                      ciur[j]=false;
    }
    k=0;
    for(i=2;i<=1000000;i++)
        if(ciur[i]==true)
            v[k++]=i;
    f>>n;
    for(i=0;i<n;i++){
        f>>x;
        t=0;
        int nr=1, s=1;
        y=x;
        while(v[t]<=x && t<k){
            if(x%v[t]==0){
                e=0;
                p=v[t];
                while(x%v[t]==0){
                    x/=v[t];
                    e++;
                    p*=v[t];
                }
            nr*=(e+1);
            s*=((p-1)/(v[t]-1))%9973;
            }
            t++;
        }
        if(nr==1 && s==1){
            nr=2;
            s=y+1;
        }
        g<<nr<<" "<<s%9973<<"\n";
    }
}