Cod sursa(job #1581998)
Utilizator | Sandulescu Alexandru alexsandulescu | Data | 27 ianuarie 2016 15:37:40 |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <fstream>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
long long t,l,nr,sum,p,d,n;
int main()
{
f>>t;
for(int i=1;i<=t;i++) {
f>>n;
nr=1; l=1; d=2; sum=1; p=0;
while(n>1&&d*d<=n) {
p=0;
while(!(n%d)) {n/=d; p++;}
nr*=(p+1);
l=1;
for(int j=1;j<=p+1;j++) l*=d;
sum*=((l-1)/(d-1));
d++;
}
if(n>1) {
nr*=2;
sum*=((n*n-1)/(n-1));
}
g<<nr<<' '<<sum%9973<<'\n';
}
return 0;
}