Cod sursa(job #1851488)
| Utilizator | Data | 19 ianuarie 2017 19:54:23 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include <iostream>
#include<fstream>
#define nmax 1000001
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int main()
{ int n,i,s,ct,x,j,nrdiv,nr,d;
fin>>n;
for(j=1;j<=n;j++)
{fin>>x;
d=2;nrdiv=s=1;
while(x!=1)
{ct=0;
while(x%d==0)
{x=x/d;
ct++;
}
if(ct>0){nr=1;
nrdiv=nrdiv*(ct+1);
for(i=1;i<=ct+1;i++)nr=nr*d;
s=s*(nr-1)/(d-1);
}
if(d*d<x)d++;
else d=x;
}
fout<<nrdiv<<" "<<s%9973<<"\n";
}
fin.close();
fout.close();
return 0;
}
