Cod sursa(job #1448657)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 7 iunie 2015 18:43:36
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long i,j,m,t,exp,suma,n,nr,poz;
int p[100000],w[1000002];
long long putere(long long x,long long y)
{
    long long put=1;
    for(i=1;i<=y;i++) put*=x;
    put--;
    return put;
}
int main()
{
    f>>t;
    p[1]=2; m=1;
    for(i=3;i<=1000000;i+=2)
        if(!w[i])
    {   p[++m]=i;
        for(j=i*i;j<=1000000;j+=(i<<1)) w[j]=1;}
    while(t--)
    {
        f>>n; poz=1; suma=1; nr=1;
        while(n>1) {exp=1; while(n%p[poz]==0) {exp++; n/=p[poz];} nr*=exp; suma=(suma*(putere(p[poz],exp)/(p[poz]-1)))%9973; poz++;}
        g<<nr<<" "<<suma<<'\n';
    }
    g.close();
    return 0;
}